我有一张基本结构如下的桌子。
unique_id | name | original | version
-----------------
1 | a1 | 1 | 1
2 | b1 | 2 | 1
3 | a2 | 1 | 2
4 | a3 | 1 | 3
5 | c1 | 5 | 1
6 | b2 | 2 | 2
从这里可以明显看出,有一种版本控制的形式,我们可以跟踪原始文档,也可以跟踪当前文档的版本。
如果我想得到一个特定文档的最新版本,我会做如下操作。
SELECT * FROM table WHERE original = (SELECT original FROM table WHERE id = 3) ORDER BY version DESC
我的问题是,如何只使用一个查询来获取表中所有最新版本的列表?
最佳答案
我的想法是
用当前最大版本构建所有原始ID的列表
使用此唯一标识符列表联接表。
SELECT *
FROM table t
INNER JOIN (
SELECT original, MAX(version) as version
FROM tabel
GROUP BY original
) tmax ON tmax.original = t.original and tmax.version = t.version
关于mysql - 如何通过一个MySQL查询从表中获取所有最新的“版本”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1321402/