본문 바로가기
✨ DBMS/Oracle

[Oracle / SQL] 쿼리문 합치기 UNION, UNION ALL

by 환풍 2023. 2. 21.
728x90
반응형

집합연산자 SELECT 쿼리를 여러개 동시 실행하려면 어떻게 해야할까?

UNION을 쓰면된다. UNION : 여러 SELECT 쿼리 결과를 모두 보여준다.

 

UNION

1
2
3
4
5
6
7
8
9
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10
 
UNION
 
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 20;
cs

 

UNION을 사용하면 두개의 쿼리를 연결시켜준다. 이때 앞에 있던 문장 ; (세미콜론) 은 지워준다.

UNION : 쿼리 결과 중복 데이터는 한번만 조회
중복된 데이터도 모두 조회하려면 UNION ALL 사용한다.


조건이 같으면 결과는 한번만 출력한다.

 

1
2
3
4
5
6
7
8
9
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10
 
UNION
 
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10;
cs

 


UNION ALL

1
2
3
4
5
6
7
8
9
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10
 
UNION ALL
 
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10;
cs

UNION ALL을 사용하면 중복되더라도 모든 데이터를 출력해줄 수 있다.


컬럼 개수 불일치

1
2
3
4
5
6
7
SELECT EMPNO, ENAME
FROM EMP
WHERE DEPTNO = 10
UNION
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 20;
cs

 


컬럼명 다르지만 자료형 일치.

1
2
3
4
5
6
7
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE DEPTNO = 10
UNION
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 20;
cs

이때 주의할 점은,

쿼리문의 컬럼 개수는 동일해야하며, 컬럼의 자료형도 동일해야한다.

728x90
반응형

댓글