by silverg [DB 기타] postgresql union [2023.01.04 17:15:22]
[1번쿼리] SELECT 4 UNION SELECT 2 UNION SELECT 4 ; 결과-- 2 -- 4
[2번쿼리] SELECT 2 UNION SELECT 4 UNION SELECT 4 ; 결과-- 4 -- 2
두 쿼리의 결과가 왜 다르게나오는지 이해가 안됩니다... 1번 union 후 order by가 되고 마지막 union값이 아래에 붙어서 나와야하는것 아닌가요?? union처리과정 순서가 궁금합니다!
union은 중복건이 제거됩니다. 그리고 원래의 순서를 보장하지 않습니다.
명시적으로 order by를 사용하는 것이 좋습니다.
https://www.postgresql.org/docs/current/queries-union.html
내부적인 수행 로직을 이해하려 하기 보다는 "정렬 구문이 없다면 정렬 결과를 보장하지 않는다" 라고 이해하시는 게 좋을 듯 합니다. 내부적인 수행 로직은 DB 종류에 따라 버전에 따라 수행 조건에 따라 다양한 형태로 수행이 될 것입니다.