기본적으로 쿼리 작성 시
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 의 최댓값을 작성
* 더 좋은 방법이 있으면 댓글 부탁드립니다.
'DB > MYSQL' 카테고리의 다른 글
[MySQL] FullText 검색, 여러개 Like (0) | 2020.09.03 |
---|---|
[MySQL] Error: MySQL authentication plugin 'caching_sha2_password (0) | 2020.05.31 |
[MYSQL] DAYOFWEEK() /현재 요일 한글로 출력 (0) | 2020.03.02 |
[MySQL] 버전 확인 (0) | 2020.02.23 |