DB/SQL

[SQL] ORDER BY와 JOIN 사용 시 정렬 제대로 안됨...

꾹꾹이 2022. 10. 9.
728x90

개발 중 ORDER BY가 정상적으로 작동하지 않는 상황이 발생했다.

검색해보니 서브쿼리 내에서 ORDER BY를 사용하고 JOIN을 걸면 이런 문제가 발생한다고 한다.

 

A 테이블 내 쿼리 실행-> B 테이블 내 쿼리 실행 -> 두개 테이블 조인 -> 조건에 부합하는 데이터 체크 -> 정렬 -> 출력

이게 이상적인 순서라면 서브쿼리 내에서 사용했을 때는

A 테이블 내 쿼리 실행-> A 테이블 정렬 -> B 테이블 내 쿼리 실행 -> 두개 테이블 조인 -> 조건에 부합하는 데이터 체크 ->  출력

이렇게 작동한다는 것이다. 

 

해결 방법은 ORDER BY를 가장 바깥쪽으로 빼주는 것이다.

 

어떤 글에선 limit를 걸면 해결이 된다는데 내 경우엔 변화가 없었다. 원인은 잘 모르겠다...

 

이거 때문에 CS 들어오고 난리가 났었다.. 작은 수정도 충분히 검수, 테스트한 뒤 운영에 반영해야 한다는 교훈이 되었다.

 

'DB > SQL' 카테고리의 다른 글

[MySQL] SELECT ~ FOR UPDATE 란?  (0) 2022.10.02
LEFT JOIN 시 주의할 점  (0) 2022.09.04
[SQL] ROW 중복제거(DISTINCT, GROUP BY)  (0) 2021.10.12

댓글