UNION 사용 시 ORDER BY를 사용하는 방법.


오라클 쿼리 생성 시 

UNION과 ORDER BY를 함께 사용하다보면 오류가 발생할 경우가 있습니다.


SELECT NO, NAME, TEL, ADDR FROM A_TABLE ORDER BY NO

UNION

SELECT NO, NAME, TEL, ADDR FROM B_TABLE ORDER BY NO;

위의 쿼리는 A_TABLE과 B_TABLE의 컬럼을 모두 뽑아오는 쿼리입니다.

A_TABLE에서 NO컬럼으로 정렬, B_TABLE에서도 ORDER BY 를 사용하여 정렬한

결과를 UNION하여 결과를 출력할 경우 오류가 발생합니다.



------------------------------------------------------------

해답은 아래에 있습니다.

SELECT * FROM으로 한번 더 감싸준 후 ORDER BY를 사용하면

오류를 피할 수 있습니다.

먼저 두 테이블의 값을 가지고 온 후 ALIAS를 사용하여

ORDER BY를 사용하는 방법입니다.

  ※ 오라클에서는 alias 사용 시 별칭 앞에 AS를 사용하지 않습니다.

      ex)select * from table 별칭


SELECT * FROM

(

SELECT NO, NAME, TEL, ADDR FROM A_TABLE A

UNION

SELECT NO, NAME, TEL, ADDR FROM B_TABLE B

)

ORDER BY A.NO, B.NO;

Posted by 준콩ol 준콩ol

댓글을 달아 주세요

  1. 호박머리추종자 2017.09.07 22:27  댓글주소  수정/삭제  댓글쓰기

    잘배우고갑니다 호박머리형~