如何获取任何行的最新更新?

时间:2014-07-06 16:17:19

标签: mysql sql database

我有一个带有列的数据库表ABC:ID,last_updated,Value等等,所以如果ID上有任何更新,那么它会插入新行而不删除具有相同ID的现有行,那么我怎样才能获得最新的每个ID的行?

e.g。

1,  20 march 2013,  45
1,  11 march 2012,  43
2,  12 march 2014,  10
3,   1 july  2014, 111
3,  17 march 2014, 112

所以我想要以下结果:

1,  20 march 2013,  45
2,  12 march 2014,  10
3,   1 july  2014, 111

2 个答案:

答案 0 :(得分:2)

Select *
from abc a
inner join (select id, max (last_updated) last_updated
            from abc
            group by id) b on a.id = b.id and a.last_updated = b.last_updated

获取最大日期和按ID分组将为您提供最新记录。然后自我加入将给你所有的记录。

这是fiddle

答案 1 :(得分:1)

您正在寻找的是名为"groupwise maximum"的着名查询。有几种获取行的方法,这里是没有子查询的解决方案:

SELECT t1.id, t1.last_updated, t1.value
FROM ABC t1
LEFT JOIN ABC t2 
ON t1.id = t2.id AND t1.last_updated > t2.last_updated
WHERE t2.id IS NULL;