【oracle 비망록】 UNION ALL구 중에서 ORDER BY를 사용하여 정렬
목적
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
)
감상
위의 코드로 잘 표시할 수 있었지만, 어쩐지 조금 돌아다니는 표현일지도 모른다고 생각하고 있다.
더 공부하고, 더 간결한 소스 코드를 기술할 수 있게 되면, 또 다시 이 기사를 갱신하고 싶다.
자신과 같은 초학자 쪽이, 이 기사에 도착해, 조금이라도 힌트가 되어 준다고 기쁘게 생각하는 것과 동시에, 엔지니어의 여러 선배님으로부터 「좀 더 이러한 쪽이 좋다고 생각해!」라고 하는 어드바이스를 받을 수 있다 그리고 매우 고맙습니다.
Reference
이 문제에 관하여(【oracle 비망록】 UNION ALL구 중에서 ORDER BY를 사용하여 정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uncleJAM/items/b3baf63f099d8e857d6e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
)
Reference
이 문제에 관하여(【oracle 비망록】 UNION ALL구 중에서 ORDER BY를 사용하여 정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uncleJAM/items/b3baf63f099d8e857d6e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)