우선 아래와 같은 테이블 testbl이 있다고 하자. +-----+------+------+--------+ | sid | ssid | sort | status | +-----+------+------+--------+ | 1 | aa | 23 | b | | 2 | aa | 11 | b | | 3 | aa | 33 | c | | 4 | aa | 32 | d | | 5 | bb | 23 | a | | 6 | bb | 67 | c | | 7 | bb | 34 | a | | 8 | bb | 77 | d | | 9 | cc | 11 | a | | 10 | cc | 22 | a | | 11 | cc | 32 | d | | 12 | cc | 23 | c | | 13 | cc | 32 | b | +-----+------+------+--------+ 위 테이블에서 ssid 를 group by로 잡은 뒤에 해당 ssid 값의 sort값중 가장 큰값을 가져오려면, mysql> select ssid, max(sort), status from testbl group by ssid +------+-----------+--------+ | ssid | max(sort) | status | +------+-----------+--------+ | aa | 33 | b | | bb | 77 | a | | cc | 32 | a | +------+-----------+--------+ 위와 같이 쿼리를 날리면 된다. 하지만 status의 값은 sid 순서로 첫번째의 값을 가져올뿐, max(sort)의 status 값을 가져오는것이 아니다. 그럼 해당 max(sort) 값의 status 값을 가져오는 방법을 알아보자면, mysql> select t1.ssid, t1.sort, t1.status from testbl as t1, (select ssid, max(sort) as max_sort from testbl group by ssid) as t2 where t1.sort = t2.max_sort and t1.ssid = t2.ssid; +------+------+--------+ | ssid | sort | status | +------+------+--------+ | aa | 33 | c | | bb | 77 | d | | cc | 32 | d | | cc | 32 | b | +------+------+--------+ max값의 sid값을 찾아내는 방법도 있지만, ssid와 max(sort)값이 원하는 조건이 되기 때문에 위와 같이 뽑아낼 수 있다.