여정의 기록
[Mysql] UNION을 사용할 때 ORDER BY 사용법 본문
오늘도 계속된 에러 끝에 ORDER BY와 UNION의 사용법을 보게 되었다.
우리는 UNION을 사용할 때
SELECT ...
UNION
SELECT ...
와 같은 구조를 쓰게되는데 이 때
SELECT ... ORDER BY ...
UNION
SELECT ... ORDER BY ....
와 같이 매번 ORDER BY 를 해주게 되는 경우에 대해 기록해보겠다.
방금 내가 시도했던 방법인데, 이런 경우 최종 결과물의 순서 정렬에 아무런 영향을 주지 않는다고 한다.
최종적으로 나오는 결과에 대해서 ORDER BY를 실행해야 한다.
왜냐하면 UNION이 정렬되지 않는 것이 기본적으로 깔린 것이기 때문이고 그러기 위해서는
ORDER BY로 정렬되지 않은 상태의 데이터를 UNION해야 한다는 의미인것 같다.
그래서 정렬을 하고 싶다면 가장 마지막에 작성하면 되는데
SELECT ...
UNION
SELECT ...
ORDER BY ...
와 같이 작성하면된다.
혹은 더 보기 좋게
(SELECT ...)
UNION
(SELECT ...)
ORDER BY ...
와 같이 작성할 수도 있다.
테이블명과 함께 컬럼을 명시하는 경우에도 ORDER BY를 사용할 수 없다.
대신 별칭을 사용하여 명시할 수 있다.
만약 ORDER BY SUM.. MAX... 와 같은 함수(aggregate function) 를 사용하면
ER_AGGREGATE_ORDER_FOR_UNION 와 같은 에러가 뜨게된다.
출처: https://dev.mysql.com/doc/refman/5.7/en/union.html#union-order-by-limit
'공부 > SQL문' 카테고리의 다른 글
[Mysql] AS ... 이름을 명시할 것 (0) | 2023.02.21 |
---|---|
[Mysql] hackerrank 문제를 푸는데... 올림을 해야하는 건가? (0) | 2023.02.21 |
[Mysql] 두 개의 가상 테이블을 사용할 때는 (0) | 2023.02.21 |
[SQL] 구조, Schema, Table, Column에 대해서 (0) | 2023.02.18 |
[ORACLE] SELECT절 (0) | 2023.02.15 |