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 의 최댓값을 작성

 

 

* 더 좋은 방법이 있으면 댓글 부탁드립니다.

 

 

 

[참고] mingggu.tistory.com/115