有一个像这样的表 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
Run Code Online (Sandbox Code Playgroud)
最简单的mysql查询是什么,每个返回的唯一值只有第一行ID ,并按最新的排序DateTime?
我预期的结果会是这样的:
ID DateTime asha
AF35 15-01-17 af
DF57 15-01-17 sk
DG36 15-01-17 be
Run Code Online (Sandbox Code Playgroud)
我尝试过SELECT * FROM T GROUP BY ID ORDER BY DateTime,但是,mysql 由于没有将其他列添加到子句中而返回错误。如果我添加它们,我仍然会得到重复的 ID 结果。
我最喜欢的编写此查询的方法是使用 not contains 子句:
select *
from T as t1
where not exists (
select 1
from T as t2
where t2.ID = t1.ID
and t2.DateTime > t1.DateTime
)
Run Code Online (Sandbox Code Playgroud)