문제
다음 SQL의 실행 결과로 가장 적절한 것은?
<조건> 동일한 연락처를 가진 회원이 2명 존재하며, 서브쿼리는 회원ID 1002, 1003 두 행을 반환한다.
SQLSELECT * FROM 회원 WHERE 회원ID = ( SELECT 회원ID FROM 회원 WHERE 연락처 = '010-1111-2222' );
① 회원ID 1002만 조회된다. ② 회원ID 1003만 조회된다. ③ 회원ID 1002와 1003이 모두 조회된다. ④ 단일 행 서브쿼리가 여러 행을 반환하여 오류가 발생한다.
정답
4번
해설
정답: 4. = 연산자는 단일 행 서브쿼리를 기대하므로 서브쿼리가 2개 이상의 행을 반환하면 오류가 발생한다.
오답 풀이
- 1번: 여러 행 중 임의로 하나만 선택하지 않는다.
- 2번: 여러 행 중 임의로 하나만 선택하지 않는다.
- 3번: 여러 값을 비교하려면 = 대신 IN 등을 사용해야 한다.
- 4번: 단일 행 서브쿼리 반환 행 수 초과 오류가 발생한다.
보충 개념 단일 행 비교 연산자에는 서브쿼리 결과가 반드시 1행이어야 한다. 여러 행과 비교하려면 IN, ANY, ALL 같은 다중 행 연산자를 사용한다.