【发布时间】:2017-07-24 00:09:42
【问题描述】:
有一个像这样的表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 结果。
【问题讨论】:
-
即来自欺骗:
select * from (select * from t order by DateTime desc) group by ID,但您必须将sql-mode设置为不包含ONLY_FULL_GROUP_BY,这样才能正常工作。 -
虽然受到广泛好评,但恐怕链接页面上接受的答案依赖于未记录的黑客攻击。也就是说,还有其他答案已记录。