sql - 选择具有最大时间戳的值

标签 sql

我有一张 table :

id|val|updated
1 | 31|2012-01-12
1 | 34|2012-01-15
2 | 41|2012-01-15
3 | 44|2012-01-15
4 | 66|2012-01-01

我需要选择具有最大更新值的 id 和 val。
所以对于这个表结果应该是:
1| 34| 2012-01-15
2| 41| 2012-01-15
3| 44| 2012-01-15
4| 66| 2012-01-01

最佳答案

这需要一个 MAX()聚合在与主表相连的子查询中。

SELECT
  tbl.id,
  tbl.val,
  tbl.updated
FROM tbl JOIN (
  /* Subquery gets MAX(updated) per id  to JOIN against */
  SELECT 
    id,
    MAX(updated) as updated
  FROM tbl
  GROUP BY id
) t2 ON tbl.id = t2.id AND tbl.updated = t2.updated

关于sql - 选择具有最大时间戳的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9317597/

相关文章:

sql - 如何在Oracle SQL中获得过去三天每天的滚动非重复计数?

sql - 在 case 语句中将 varchar 转换为 int

mysql - 需要更漂亮的sql查询建议

sql - 我怎样才能避免 Postgres 中的这种三向死锁?

sql - 更新数据库中尚未存在于表中的多条记录

c# - LINQ 查询其中 ID 不作为对象列表中的属性存在

mysql - 在 SQL 中按星期几和一天中的小时分组

sql - 如何清除 SQL Server 2005/2008 中的查询执行统计信息

mysql - 在 mysql 查询中排除由 "between"定义的值范围内的值

MySQL:通过将位于两个单独表中的价格和数量列相乘来计算餐厅数据库中每个订单的总价