오라클에서는 union 시에 내부적으로 sort 가 수행되어서 결과값이 정렬이 되어 나옵니다.
하지만 postgresql , mysql 등은 union 이라 하더라도 오라클과 달리 결과가 정렬이 보장안됩니다.
주의하세요.
여긴, postgresql 싸이트지만 mysql 를 예로 들어볼게요.
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.20-19 |
+-----------+
1 row in set (0.01 sec)
mysql> select 2 as result from dual union select 1 from dual;
+--------+
| result |
+--------+
| 2 |
| 1 |
+--------+
2 rows in set (0.00 sec)
mysql>
물론 오라클에서도 정렬을 원한다면,
order by 를 명시적으로 붙여주는게 옳바른 쿼리 작성법입니다.
결론: 디비종류에 상관없이 정렬된 결과를 보장받고 싶으면 order by 를 명시적으로 붙이세요!