-
반응형
때때로 사용자 기준으로 제일 마지막 데이터 조회가 필요할 때가 있다. 다양한 방법이 있을텐데 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으로 조회한다.
- 끝
반응형