또 오류가 발생하네요. 그 이유는 첫 번째 SELECT 문에서 사용한 ORDER BY 절 때문입니다. 기본적으로 UNION을 사용한 쿼리에서는 ORDER BY 절을 맨 마지막 SELECT 문에만 붙일 수 있습니다. 이렇게 하면 조회된 데이터가 ORDER BY 절에 명시한 칼럼 값을 기준으로 정렬됩니다. 만약 ORDER BY 절을 사용해 각 SELECT 문을 개별적으로 정렬하고 싶다면 다음과 같이 정렬하고자 하는 SELECT 문에 소괄호를 추가하면 됩니다.
코드 8-24
(SELECT col1, col2 FROM tbl1 ORDER BY 1 DESC)
UNION
SELECT col1, col2 FROM tbl2;
실행결과
코드 8-24를 보면 첫 번째 SELECT 문에 ORDER BY 절을 넣었지만, 소괄호로 감싼 덕분에 오류가 나지 않고 데이터가 조회됐습니다. 그런데 ORDER BY 1 DESC는 tbl1 테이블의 col1 값을 기준으로 내림차순 정렬하라는 의미인데, 결과를 보면 오름차순으로 정렬됐습니다. 이는 소괄호를 포함한 SELECT 문에 ORDER BY 절을 넣더라도 최종 반환되는 결과의 정렬에는 영향을 주지 않아서 그렇습니다.