如何使用一个MySQL查询从我的表中获取所有最新的“版本”?

时间:2009-08-24 09:43:17

标签: mysql

我有一张具有以下基本结构的表格。

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

我的问题是,如何只使用一个查询获取表格中所有最新版本的列表?

1 个答案:

答案 0 :(得分:2)

想法是

  • 使用当前最高版本
  • 构建所有原始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