ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] 사용자별 제일 마지막 데이터 조회하기
    2021. 6. 16. comments

    때때로 사용자 기준으로 제일 마지막 데이터 조회가 필요할 때가 있다. 다양한 방법이 있을텐데 SQL로 간결하게 데이터를 조회할 수 있는 방법을 정리하려고 한다.

    결론부터 말하면 사용자 ID를 기준으로 group by를 하고 나서 그 중 updated_at 필드가 가장 큰 값을 조건으로 데이터를 찾으면 된다.

    예를 들어 가상의 테이블을 하나 만들어서 확인해보자. 아래는 사용자별 과목에 대한 점수를 저장하는 테이블이다.

    create table test_score
    (
        id            bigint(11) auto_increment comment 'PK' primary key,
        user_id       bigint(11)
        round         int,
        subject       varchar(30),
        score         int,
        created_at    datetime default CURRENT_TIMESTAMP null,
        updated_at    datetime default CURRENT_TIMESTAMP null
    );

     

    select * from test_score
    where (id, updated_at) in (
        select id, max (updated_at) from test_score group by user_id
    );
    
    • 서브쿼리로 user_id 그룹 데이터를 모으고 그 중에서 id와 updated_at이 가장 큰 값을 준비한다. 
    • SELECT where 조건에 서브쿼리로 준비한 사항을 in으로 조회한다.
    반응형

    댓글

Designed by Tistory.