为每个不同的列值选择第一行

时间:2017-03-03 18:51:58

标签: mysql sql

有一个像这样的表格T:

 ID    DateTime   asha   
AF35   15-01-17    af   
AF35   14-01-17    la   
AF35   13-01-17    fi   
DF57   15-01-17    sk   
DF57   14-01-17    sj   
DG36   15-01-17    be   
DG36   14-01-17    dh   

最简单的mysql查询是什么,只返回返回的每个唯一ID的第一行,按最新的DateTime排序?

我预期的结果是这样的:

ID    DateTime   asha   
AF35   15-01-17    af     
DF57   15-01-17    sk    
DG36   15-01-17    be 

我试过SELECT * FROM T GROUP BY ID ORDER BY DateTime但是,mysql返回错误,因为没有将其他列添加到子句中。如果我添加它们,我仍然会获得ID的重复结果。

2 个答案:

答案 0 :(得分:3)

我最喜欢写这个查询的方法是使用not exists子句:

 ['1,150.00', '150.00', '1,150.00', '100.00', '400.00', '800.00']

答案 1 :(得分:-1)

SELECT Distinct(ID),DateTime,asha FROM T GROUP BY ID ORDER BY DateTime desc

将上述查询用于唯一的Id记录。