我有一张基本结构如下的桌子。

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/

10-12 21:27