다음 쿼리가 FALSE를 반환하는 이유를 올바르게 설명한 것은?

상황: OrderDeta

과목: MySQL

문제 번호: 3179

hard
다음 쿼리가 FALSE를 반환하는 이유를 올바르게 설명한 것은?
SELECT ProductName
FROM Products  
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

상황: OrderDetails에서 Quantity = 10인 레코드들의 ProductID가 42, 41, 10으로 서로 다름
A. 서브쿼리에서 반환되는 값이 없기 때문입니다
B. 하나의 ProductID가 동시에 42, 41, 10과 모두 같을 수는 없기 때문입니다
C. Products 테이블에 해당하는 상품이 없기 때문입니다
D. ALL 연산자는 등호(=)와 함께 사용할 수 없기 때문입니다

정답: B



⦁ 서브쿼리 결과: ProductID 42, 41, 10을 반환

⦁ ALL 조건의 의미: ProductID = ALL (42, 41, 10)
⦁ ProductID가 42와 같으면서 동시에
⦁ ProductID가 41과 같으면서 동시에
⦁ ProductID가 10과 같아야 함

⦁ 논리적 불가능: 하나의 값이 서로 다른 세 값과 동시에 같을 수 없습니다

⦁ 결과: 조건을 만족하는 ProductID가 존재하지 않으므로 FALSE 반환

⦁ 이런 경우 ALL보다는 ANY나 IN을 사용하는 것이 적절합니다

💡 학습 팁

이 문제를 포함한 MySQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.