我正在尝试编写一个 SQL Server 查询来提取每个不同 ColumnId 具有最高“修订”号的行。
例如,如果我有一个数据集,例如:
Id ColumnId Revision
------------------------
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 2 3
7 2 4
Run Code Online (Sandbox Code Playgroud)
我想要的结果如下:
Id ColumnId Revision
------------------------
3 1 3
7 2 4
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下SQL语句:
SELECT Id, ColumnId, MAX(Revision) As Revision from Bug
GROUP BY ColumnId
Run Code Online (Sandbox Code Playgroud)
如果我从上面的查询中删除 Id,它会部分返回我需要的内容。不过我还需要 Id 列。
为了让这个查询按预期工作,我在这里缺少什么?
编辑: 我从上面的数据集中没有弄清楚的一件事是,特定 ColumnId 的最高修订号不一定具有最高的 Id。
Id ColumnId Revision
------------------------
1 1 1
2 1 3 <- Note this has a higher revision number than row Id 3.
3 1 2 <- This has a lower revision number than row Id 2.
4 2 1
5 2 2
6 2 3
7 2 4
Run Code Online (Sandbox Code Playgroud)
您可以使用子查询,然后在 ColumnId 和 MaxRevision 上进行内部联接,如下所示:
SELECT A.Id, A.ColumnId, A.Revision
from Bug A
INNER JOIN
(SELECT ColumnId, MAX(Revision) As MaxRevision
FROM BUG
GROUP BY ColumnId ) B ON
A.ColumnId = B.ColumnId AND
A.Revision = B.MaxRevision
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2867 次 |
| 最近记录: |