더북(TheBook)

또 오류가 발생하네요. 그 이유는 첫 번째 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 절을 넣더라도 최종 반환되는 결과의 정렬에는 영향을 주지 않아서 그렇습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.