MySQL只带回最新记录

时间:2017-06-21 14:04:00

标签: mysql group-by max sql-order-by

我有一个存储行的表,其中一些字段是id,name,date和version。我可以有两行具有相同的name但是版本不同,因此文件可以有多个版本。

我的查询:

 SELECT id, name, date, version FROM my_table AS a

示例输出(每个新行是另一行):

1 | abc.xls | 1488363249 | 1
2 | example.xls | 1488363232 | 1
3 | thirdfile.xls | 1488362312 | 1
4 | thirdfile.xls | 1488363249 | 2

我想做的只是带回以下内容:

1 | abc.xls | 1488363249 | 1
2 | example.xls | 1488363232 | 1
4 | thirdfile.xls | 1488363249 | 2

发生的事情是它注意到id 3和4是相同的文件名,它只带回了版本2,因为它是该文件名的最新版本

如何在单个查询中实现此目的。

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效

SELECT t.id, t.name, t.date, t.version
FROM my_table t
JOIN (SELECT max(version) max_version, name FROM my_table GROUP BY name) t1
  ON t.version= t1.max_version AND t.name= t1.name