【oracle 비망록】 UNION ALL구 중에서 ORDER BY를 사용하여 정렬

3800 단어 오라클SQL
※이 비망록은 초학자의 제가 학습한 내용을 잊지 않기 위해서 써낸 것이 됩니다.

목적



UNION ALL과 ORDER BY를 사용하여 정렬 된 UNION ALL 절을 결합하고 싶습니다.

예제



1조, 2조, 3조의 학생의 생년월일 정보 중에서 생일의 오름차순으로 정렬해,
1998년생인 사람만 표시하고 싶습니다.
· 생일 1조의 가장 빠른 사람 ⇒ 생일 1쌍의 가장 늦은 사람
⇒2쌍의 생일의 가장 빠른 사람⇒2쌍의 생일의 가장 늦은 사람
⇒3쌍의 생일의 가장 빠른 사람⇒3쌍의 생일의 가장 늦은 사람

각 세트의 테이블


오답



간단히 생각해, 아래와 같이 UNION ALL구안에 ORDER BY를 사용하면 에러가 된다.
SELECT *
  FROM 1
 WHERE 誕生日 <= 19981231
 ORDER BY 誕生日

UNION ALL

SELECT *
  FROM 2
 WHERE 誕生日 <= 19981231
 ORDER BY 誕生日

UNION ALL

SELECT *
  FROM 3
 WHERE 誕生日 <= 19981231
 ORDER BY 誕生日

잘 표시 할 수있는 코드



아래와 같이 하위 쿼리를 사용하면 잘 작동했습니다.
SELECT *
  FROM (SELECT *
          FROM 1
         ORDER BY 誕生日
         WHERE 誕生日 <= 19981231
       )

UNION ALL

SELECT *
  FROM (SELECT *
          FROM 2
         ORDER BY 誕生日
         WHERE 誕生日 <= 19981231
       )

UNION ALL

SELECT *
  FROM (SELECT *
          FROM 3
         ORDER BY 誕生日
         WHERE 誕生日 <= 19981231
       )

감상



위의 코드로 잘 표시할 수 있었지만, 어쩐지 조금 돌아다니는 표현일지도 모른다고 생각하고 있다.
더 공부하고, 더 간결한 소스 코드를 기술할 수 있게 되면, 또 다시 이 기사를 갱신하고 싶다.
자신과 같은 초학자 쪽이, 이 기사에 도착해, 조금이라도 힌트가 되어 준다고 기쁘게 생각하는 것과 동시에, 엔지니어의 여러 선배님으로부터 「좀 더 이러한 쪽이 좋다고 생각해!」라고 하는 어드바이스를 받을 수 있다 그리고 매우 고맙습니다.

좋은 웹페이지 즐겨찾기