wsa*_*ams 4 mysql group-by distinct
我有一个包含三列的MySQL(5.1.49)表.
mysql> create table testme(id int auto_increment, id2 int not null, somedate datetime, primary key(id));
Run Code Online (Sandbox Code Playgroud)
在我的情况下,id2不是唯一的,但我想返回具有不同id2值和max somedate的行.
这是一些示例数据.
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');
Run Code Online (Sandbox Code Playgroud)
这个问题几乎可以回答我的问题,但是使用额外的id字段,返回的id和id2不匹配.对于id2 = 5,它返回id = 1而不是id = 2.
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 |
+----+-----+---------------------+
Run Code Online (Sandbox Code Playgroud)
我期待着,
+----+-----+---------------------+
| id | id2 | max(somedate) |
+----+-----+---------------------+
| 2 | 5 | 2012-02-02 02:02:02 |
| 3 | 7 | 2010-01-10 11:01:33 |
+----+-----+---------------------+
Run Code Online (Sandbox Code Playgroud)
想要与每个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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9783 次 |
| 最近记录: |