SQL - 문제 미리보기
문제 1689
medium
다음 쿼리에서 빈칸에 들어갈 올바른 구문은?
```sql
SELECT SupplierName
FROM Suppliers
WHERE ______ (SELECT ProductName FROM Products
WHERE Products.SupplierID = Suppliers.SupplierID);
```
정답: B
쿼리의 목적과 구조를 분석하여 정답을 도출:
쿼리 목적 분석:
• Suppliers 테이블에서 공급업체명(SupplierName) 조회
• 조건: 해당 공급업체가 제공하는 상품이 존재하는 경우만
서브쿼리 구조:
• Products 테이블에서 관련 상품 검색
• `Products.SupplierID = Suppliers.SupplierID`로 연결
• 특정 공급업체의 상품이 존재하는지만 확인하면 됨
EXISTS가 정답인 이유:
1. 존재 여부 확인: 상품이 있는지만 확인하고 실제 값은 불필요
2. 상관 서브쿼리: 외부 쿼리의 각 공급업체별로 서브쿼리 실행
3. 성능 효율성: 첫 번째 일치하는 상품을 찾으면 즉시 TRUE 반환
다른 선택지 검토:
• IN: 특정 값들과 일치하는지 확인하는 용도 (값 비교)
• JOIN: 테이블 결합 용도 (구문 위치 부적절)
• HAVING: 그룹화 후 조건 적용 (GROUP BY 없음)
💡 학습 팁
이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.