DB/MYSQL
[Mysql] Group by, Order by 정렬 순서
보겸삼촌
2020. 9. 4. 19:39
기본적으로 쿼리 작성 시
order by, group by 순서는 group by -> order by 순서이기 때문에
반대의 경우는 다음과 같이 서브쿼리를 이용해서 작성할 수도 있음
-- 예시
select 별칭1.*
from (
select *
from 테이블명1
order by 테이블명1.칼럼명1 asc -- 정렬순서 기준
) as 별칭1
group by 별칭1.칼럼명2 -- 그룹조건 기준
그러나 단일 쿼리 조회가 아니라 서브쿼리 안에 작성하는 경우 결과값이 달라질 수 있음.
이유는 order by가 서브쿼리 안에 존재하는 경우 성능이슈가 발생하므로 DBMS가 자동으로 삭제한다고 함
-- 해결방법
select 별칭1.*
from (
select *
from 테이블명1
order by 테이블명1.칼럼명1 asc -- 정렬순서 기준
limit 18446744073709551615 -- 2^64-1
) as 별칭1
group by 별칭1.칼럼명2 -- 그룹조건 기준
서브쿼리 내 LIMIT 의 최댓값을 작성
* 더 좋은 방법이 있으면 댓글 부탁드립니다.