더북(TheBook)

위 예제에서는 서브쿼리가 17000인 단일 행을 전달했기 때문에 단일 행 연산자인 등호(=)를 사용했습니다. 그런데 전달 결과가 다중 행일 때 단일 행 연산자를 사용하면 어떻게 될까요?

SELECT *

FROM employees A

WHERE A.salary = (

                  SELECT salary

                  FROM employees

                  WHERE last_name = 'Taylor'

                  );

 

전달 결과가 다중 행일 때 단일 행 연산자를 사용하면 다음과 같은 오류가 발생합니다.

 

그림 7-3 반환값 개수에 따른 연산 오류

 

last_name이 ‘Taylor’인 직원이 두 명이 존재하며 이들은 각각 8600과 3200으로 두 개의 결과 행을 전달합니다. 하지만 단일 행 연산자를 사용했기 때문에 오라클 데이터베이스 시스템은 ‘단일 행 서브쿼리가 하나 이상의 행을 전달했습니다.’라는 오류를 출력합니다. 이런 경우에는 다음에 배우게 될 다중 행 서브쿼리를 사용해야 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.