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

标签 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 结果。

最佳答案

我最喜欢的编写此查询的方法是使用不存在子句:

select *
from T as t1
where not exists (
    select 1 
    from T as t2 
    where t2.ID = t1.ID 
    and t2.DateTime > t1.DateTime
)

关于mysql - 为每个不同的列值选择第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42586387/

相关文章:

jquery - jqGrid - 未应用日期和时间格式

php - PHP/MySQL 提取最后两个日期

mysql - 如何从 mysql 获取 utf-8 字符到 Visual Fox Pro

MySQL INSERT INTO 在 WHERE 子句处失败

asp.net - 如何执行 SQL 语句?

SQL 日期范围查询 - 表比较

sql - 我可以检查更新的 SET 中的变量是否为 NULL 吗?

mysql - 获取两个表的总和 GROUP BY date in year

MySQL 在更新期间将我的 JSON 对象解释为字符串

php mysql插入条件判断