본문 바로가기
MySql

MySQL-DESC 별 Order by 그룹화

by 베이스 공부 2020. 10. 23.
반응형

테이블 : uuid, 버전, 날짜 시간

버전은 고유하지 않지만 주어진 uuid에 대해 최신 날짜 시간이있는 행만 가져 오는 것입니다.

SELECT * FROM table WHERE uuid = 'bla'GROUP BY 버전 ORDER BY datetime desc

... 물론 datetime asc 결과를 얻습니다. 그룹을 desc로 "사전 주문"하여 최신 버전 만 가져 오도록하는 방법이 있습니까?

 

해결 방법

 

테이블에는 3 개의 필드 만 있고 uid로 필터링하고 있으므로 JOIN없이 MAX를 사용할 수 있습니다.

SELECT version, MAX(datetime) Maxdatetime
FROM table
WHERE uuid='bla'
GROUP BY version

그러나 테이블에 더 많은 필드가 있거나 uid 로 필터링하지 않는 경우 먼저 각 버전에 대한 MAX 날짜 시간을 가져온 다음 행을 선택해야합니다.

SELECT t.uuid, t.version, t.datetime 
FROM table t JOIN (
    SELECT version, MAX(datetime) Maxdatetime
    FROM table
    WHERE uuid='bla'
    GROUP BY version
) r ON t.version = r.version AND t.datetime = r.Maxdatetime
WHERE t.uuid='bla'
ORDER BY t.datetime desc

 

참조 페이지 https://stackoverflow.com/questions/4687827

 

 

반응형

댓글