본문 바로가기
MySql

MySQL 고유 한 값과 최대 날짜가있는 행 선택

by 베이스 공부 2020. 9. 21.
반응형

세 개의 열이있는 MySQL (5.1.49) 테이블이 있습니다.

mysql> create table testme(id int auto_increment, id2 int not null, somedate datetime, primary key(id));

제 경우에는 id2 가 고유하지 않지만 최대 somedate 로 고유 한 id2 값이있는 행을 반환하고 싶습니다.

다음은 몇 가지 샘플 데이터입니다.

mysql> insert into testme values (1, 5, '2012-01-02 01:01:01'),(2, 5, '2012-02-02 02:02:02'),(3, 7, '2010-01-10 11:01:33');


mysql> select id, id2, max(somedate) from testme group by id2;
+----+-----+---------------------+
| id | id2 | max(somedate)       |
+----+-----+---------------------+
|  1 |   5 | 2012-02-02 02:02:02 |
|  3 |   7 | 2010-01-10 11:01:33 |
+----+-----+---------------------+

기대하고 있어요

+----+-----+---------------------+
| id | id2 | max(somedate)       |
+----+-----+---------------------+
|  2 |   5 | 2012-02-02 02:02:02 |
|  3 |   7 | 2010-01-10 11:01:33 |
+----+-----+---------------------+

각 ID2의 최대 날짜와 일치하는 ID를 원합니다.

누구든지 제발 아이디어가 있습니까? 감사

 

해결 방법

 

이 쿼리는 최적의 쿼리는 아니지만 확실히 작동합니다.

select t.id, s.id2, s.somedate 
from testme t 
  join 
    ( select id2, max(somedate) as somedate 
      from testme 
      group by id2
    ) s 
    on  s.id2 = t.id2 
    and s.somedate = t.somedate;

 

참조 페이지 https://stackoverflow.com/questions/9114928

 

 

반응형

댓글