mysql의 GROUP BY로 그룹화된 최신 레코드 가져오기

2351 단어 MySQLSQL
GROUP BY 영역에서 최신 레코드를 가져온다고 가정합니다.
예를 들어, 사용자가 탐색한 페이지를 기록하는 표user_page_logs가 있다고 가정합니다.
  • user_page_logs 테이블
  • user_page_logs 내 데이터
  • 사용자의 페이지당 조회 시간을 지정하는 최신 버전을 알고 싶다면.
    갑자기 생각난 SQL은 다음과 같다.
    SELECT * FROM user_page_logs WHERE user_id = 111 GROUP BY page_id ORDER BY created DESC;
    
    상술한 집행 결과는 다음과 같다.

    page_id가 1인 그룹은 열람 시간2017-05-20 20:00:00의 기록을 원했지만 2017-05-03 10:00:00의 기록을 얻었다.
    Group By 이후 order By를 주문한 것 같아서 기대한 결과를 얻지 못할 것 같습니다.
    id는 AUTOINCREMENT를 전제로 하지만 다음 SQL을 통해 얻을 수 있습니다.
    SELECT * FROM user_page_logs WHERE id IN( 
      SELECT MAX(id) FROM user_page_logs WHERE user_id = 111 GROUP BY page_id 
    );
    

    좋은 웹페이지 즐겨찾기