在MySQL中获取最新版本的记录

时间:2016-07-27 17:01:37

标签: mysql

我试图获取每条记录的最新版本。例如,我试图获取id 13的版本2而不是版本1和版本2,我尝试使用带有MAX函数的子查询,但它没有做到任何不同的。

td_asset上的主键是PRIMARY KEY(ass_id, ass_version)

** SQL查询**

SELECT `ass_id` AS `id`
, `ass_title` AS `name`
, `ass_version` AS `version`
FROM `td_asset`
GROUP BY `ass_id`, `ass_version`
ORDER BY `id` DESC, `ass_version` DESC;

SQL查询结果

id  name        version
13  test name   2
13  test name   1
12  test name   1
11  test name   1
10  test name   1
9   test name   1
8   test name   1
7   test name   1
6   test name   1
5   test name   1
4   test name   1
3   test name   1
2   test name   1
1   test name   1

非常感谢任何建议/想法。

2 个答案:

答案 0 :(得分:1)

虽然 这个问题很多,但有时很难让其他人的问题适应您的情况。因此,处理此问题的一种方法是使用子查询。

SELECT
    tda.ass_id AS id,
    tda.ass_title AS name,
    tda.ass_version AS version
FROM td_asset tda
WHERE tda.version = (SELECT MAX(tda2.version) FROM td_asset td2 WHERE tda2.id = tda.id)
GROUP BY tda.ass_id

这基本上说,每个id,查找最大版本并使用该记录。

还有其他方法可以解决这个问题,这只是其中之一。

答案 1 :(得分:-2)

只需选择MAX(ass_version)并仅按ass_id分组:

SELECT `ass_id` AS `id`
     , `ass_title` AS `name`
     , MAX(`ass_version`) AS `version`
FROM `td_asset`
GROUP BY `ass_id`
ORDER BY `id` DESC, `ass_version` DESC;