본문 바로가기
SQL

SQL 강의 SQLP SQLD 기출 문제 - 009 ( UNION ALL )

by SQL Master 2022. 10. 13.
반응형

UNION이나 UNION ALL 사용 시 주의해야 할 경우에 대해서 알아보고 어떤 경우에 에러가 발생하는지 파악할 수 있는 문제입니다.

 

문제

아래 SQL의 결과와 똑같은 SQL를 고르세요.

[TABLE_A]

TABLE_A TABLE_B
COL1 NUMBER COL1 NUMBER
COL2 VARCHAR2(1) COL2 NUMBER
COL3 VARCHAR2(1) COL3 VARCHAR2(1)
1)
SELECT COL1, COL2 FROM TABLE_A
UNION ALL
SELECT COL1, COL2, COL3 FROM TABLE_B

2)
SELECT COL1, COL2 FROM TABLE_A
UNION ALL
SELECT COL1, COL3 FROM TABLE_B ORDER BY 1

3)
SELECT COL1, COL2 FROM TABLE_A
UNION ALL
SELECT COL1, COL2 FROM TABLE_B ORDER BY COL3

4)
SELECT COL1, COL2 FROM TABLE_A ORDER BY COL1
UNION ALL
SELECT COL1, COL2 FROM TABLE_B ORDER BY COL1

 

 


 

문제풀이

  • UNION ALL 은 비교하는 SQL의 컬럼 갯수, 컬럼 데이터 타입이 동일해야 한다.
  • ORDER BY 절에 나오는 컬럼은 SELECT 절에 명시한 컬럼만 가능하다. (중요!!)
1)
SELECT COL1, COL2 FROM TABLE_A
UNION ALL
SELECT COL1, COL2, COL3 FROM TABLE_B
>> 비교되는 컬럼의 갯수가 달라서 에러가 발생합니다.

2)
SELECT COL1, COL2 FROM TABLE_A
UNION ALL
SELECT COL1, COL3 FROM TABLE_B ORDER BY 1
>> 비교되는 컬럼 갯수, 데이터타입이 같아서 정상
>> ORDER BY 절이 마지막에 명시되어 정상
>> ORDER BY 절에 1 은 SELECT 절에 명시한 첫번째 컬럼을 의미합니다.

3)
SELECT COL1, COL2 FROM TABLE_A
UNION ALL
SELECT COL1, COL2 FROM TABLE_B ORDER BY COL3
>> ORDER BY 절의 컬럼은 SELECT 절에 명시한 컬럼만 사용 가능해서 에러 발생합니다.

4)
SELECT COL1, COL2 FROM TABLE_A ORDER BY COL1
UNION ALL
SELECT COL1, COL2 FROM TABLE_B ORDER BY COL1
>> COL2의 데이터 타입이 달라서 에러가 발생합니다.

 

 

 

 

간단한 문제 같지만 UNION ALL의 특성을 잘 파악해야만 풀 수 있는 문제입니다.

추가적인 궁금증은 댓글로 달아주세요!! :)

 

반응형

댓글