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

在MySQL中获取最新版本的记录,mysql,Mysql,我正试图为每一张唱片获取最新版本。例如,我尝试只获取ID13的版本2,而不是版本1和版本2,我尝试使用带有MAX函数的子查询,但没有任何不同 表td\u asset上的主键是primary key(ass\u id,ass\u version) **SQL查询** SELECT `ass_id` AS `id` , `ass_title` AS `name` , `ass_version` AS `version` FROM `td_asset` GROUP BY `ass_id`, `ass_

我正试图为每一张唱片获取最新版本。例如,我尝试只获取ID13的版本2,而不是版本1和版本2,我尝试使用带有
MAX
函数的子查询,但没有任何不同

td\u asset
上的主键是
primary key(ass\u id,ass\u 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
非常感谢您的任何建议/想法。

只需选择
MAX(ass\u版本)
并仅按
ass\u 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;
虽然这个问题被问了很多,但有时很难让别人的问题适应你的情况。因此,处理这个问题的一种方法是使用子查询

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,查找max版本并使用该记录


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

这个问题被不断地问和回答,所以是的,我有一个建议。@草莓,考虑到我先搜索了这么多,但在搜索查询中找不到任何东西,我总是先搜索,以避免重复问题。这样我可以看到9厘米左右的相关答案->不用担心。希望有帮助。