SQL/oracle
oracle SQL - 다중 열 서브 쿼리
jun.s.gi
2023. 5. 13. 18:01
728x90
서브 쿼리의 반환 데이터가 두 개 이상의 열을 반환한다면 이를 다중 열 서브 쿼리라고 합니다.
열의 비교방식으로 두 가지가 있습니다.
1. 쌍 비교 방식, Pairwise
2. 비쌍 비교 방식, Non-Pairwise, Unpairwise
1. 쌍 비교 방식
비교할 열들을 괄호로 묶어서 동시에 비교합니다.
SELECT 컬럼1, 컬럼2...
FROM 테이블
WHERE (컬럼, 컬럼..) IN (SELECT 컬럼, 컬럼..
FROM 테이블
WHERE 조건);
이때! 비교 연산자 좌우에 있는 칼럼의 개수가 같아야 합니다.
예시)
2. 비쌍 비교 방식
n개의 열을 따로 비교하는 방식입니다.
SELECT 컬럼1, 컬럼2...
FROM 테이블
WHERE 컬럼 IN (SELECT 컬럼
FROM 테이블
WHERE 조건)
AND 컬럼 IN (SELECT 컬럼
FROM 테이블
WHERE 조건);
예시)
비슷해보여도 결과가 다른 이유
비쌍 비교 방식과 쌍 비교 방식이 비슷해 보여도 결과가 다른 이유는 IN 연산자의 특징 때문입니다.
먼저 차 씨인 사람의 직책과 부서 번호를 확인하면 다음과 같습니다.
IN 연산자는 AND 연산자보다 우선순위가 높기 때문에 비쌍 비교 방식의 코드를 해석하면
"부서번호가 100 또는 300 이면서 직책이 과장이거나 사원인 사람"이라고 할 수 있습니다.
비쌍 비교 방식은 원하지 않는 데이터를 출력할 수 있기 때문에 주의해야 합니다.
쌍 비교 방식의 코드는
"부서번호가 100이고 직책이 과장이거나 부서번호가 300이고 직책이 사원인 사람"으로 해석할 수 있습니다.
728x90