[Oracle] UNION, UNION ALL 차이점
UNION이란, 2개 이상의 SELECT문을 연결해 또 다른 하나의 쿼리로 가공할 때 사용한다.
그럼 UNION과 UNION ALL의 차이점은
중복 데이터를 제거하고 보여주냐, 그대로 보여주냐 차이이다.
1. UNION
SELECT A.COLUMN1
, A.COLUMN2
, A.COLUMN3
FROM TABLE_1 A
UNION
SELECT B.COLUMN1
, B.COLUMN2
, B.COLUMN3
FROM TABLE_2 B
각 SELECT 한 값의 중 중복된 것이 있으면 제거하고 보여진다.
TABLE_1, TABLE_2에서 COLUMN1,2,3이 중복되는 값이 있으면 제거되고 보여진다.
2. UNION ALL
SELECT A.COLUMN1
, A.COLUMN2
, A.COLUMN3
FROM TABLE_1 A
UNION ALL
SELECT B.COLUMN1
, B.COLUMN2
, B.COLUMN3
FROM TABLE_2 B
각 SELECT한 값은 중복되어도 그대로 보여진다.
TABLE_1, TABLE_2에서 COLUMN1,2,3이 중복되는 값이 있어도 SELECT된 게 있으면 다 보여진다.
주의사항은 아래와 같다.
1.SELECT하는 컬럼의 타입이 동일해야 한다.
"ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다
2. SELECT하는 컬럼의 개수가 동일해야 한다.
"ORA-01789: 질의 블록은 부정확한 수의 결과 열을 가지고 있습니다."
컬럼 개수가 동일하지 않아서 비교해 가며 찾아봤는데
주석이 풀려 있던 컬럼이 있어서 그랬었다.
찾아보니 콤마(,)가 없어서 2번 에러문이 뜬 경우도 있었다.
쿼리를 복붙해오는 경우라면 확인을 잘 해야할 듯 하다.