✏️ UNION / UNION ALL
여러 개의 SELECT문 결과를 하나의 결과로 합쳐주는 집합 연산
두 연산의 차이는 중복 제거!
• UNION => 중복 제거
• UNION ALL => 중복 제거 X
중복 제거가 필요한 것이 아니라면 UNION 보다는 UNION ALL을 사용하는 것이 좋다.
UNION 은 중복 제거라는 단계가 한번 더 들어가기 때문에 속도와 부하에서 안좋아...
UNION과 UNION ALL을 사용할 때는
컬럼의 개수, 데이터 타입, 순서가 동일해야한다.
이 항목들이 동일하지 않은 경우 아래와 같은 문제들이 발생한다.
1. 컬럼의 개수가 일치하지 않는 경우
ORA-01789: 질의 블록은 부정확한 수의 결과 열을 가지고 있습니다.
(ORA-01789: query block has incorrect number of result columns)
SELECT ID, NAME
FROM USER
UNION ALL
SELECT ID
FROM USER
2. 데이터 타입이 다른 경우
ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다.
(ORA-01790: expression must have same datatype as corresponding expression)
SELECT 1 AS NO
FROM DUAL
UNION ALL
SELECT 'ABC' AS NO
FROM DUAL
3. 컬럼 순서가 다른 경우
컬럼 순서가 달라지면 데이터가 이상하게 변형될 수 있다.
만약 별칭(AS, 앨리어스)를 준다고 해도 순서에 따라 합쳐지니 조심해야한다.
SELECT 'K' AS ID
, 'KIM' AS NAME
FROM DUAL
UNION ALL
SELECT 'LEE' AS NAME
,'L' AS ID
FROM DUAL
[참고]
'Oracle' 카테고리의 다른 글
[Oracle] ORA-00913: too many values (0) | 2025.02.25 |
---|---|
[Oracle] USER_SOURCE - 프로시저, 함수 등 내용 조회하기 (0) | 2025.02.19 |
[Oracle] ORA-01791: SELECT식이 부적합합니다. (0) | 2024.12.12 |
[Oracle] 정수 소수점 표현하기 (0) | 2024.10.07 |
[Oracle] sql developer JDK 경로 변경하기 (0) | 2024.03.03 |