Group By 최대값을 가진 Row를 추출하는 쿼리

  • Group by를 이용하여 특정필드의 최대값을 가지고 올수 있지만 group by 특성상 해당하는 row의 다른 필드의 값을 가지고 올수가 없다.
  • 최대값이 있는 row 값을 가지고 오는 방법을 아래와 같이 2가지 방법이 있다.
  • DB, Index, Table 구조 등에 따라 속도가 달라지기때문에 그때 그때에 맞게 2가지 방법중에 사용하면 된다.
 
SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
    SELECT id, MAX(rev) rev
    FROM YourTable
    GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev
  • Group BY와 SubQuery를 활용하여 먼저 id와 max값을 가지고 온뒤 INNER JOIN을 이용하여 해당하는 ROW를 찾아오는 쿼리
 
SELECT a.*
FROM YourTable a
LEFT JOIN YourTable b
ON a.id = b.id AND a.rev < b.rev
WHERE b.id IS NULL;
  • Group By 키워드를 사용하지 않고 최대값을 찾는 쿼리
  • Self Left Join을 통해 가지고 올수 있다.
  • `b.rev`가 NULL 이라면 `a.rev`가 최대값이기 때문에 최대값을 가진 row값을 추출을 할수가 있다.

[출처] https://helloino.tistory.com/120

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED