对不起我的头衔,似乎有点“关闭”,但找不到更好的解释我的问题。
所以,我有一个如下表:
CREATE TABLE DocumentTable
(
id int identity primary key,
ParentId int,
CategoryId int,
Version int
);
这用于存储文档并跟踪其版本。
是否可以使用返回最新版本文档的SQL?或者我应该以编程方式执行此操作(这会降低性能,因为我会选择所有文档,然后进行操作)
这里还是我的表格的SQLFiddle,其中包含示例数据。
例如我在我的小提琴中有这些数据:
ID PARENTID CATEGORYID VERSION
1 (null) 1 1
2 1 1 2
3 2 1 3
4 (null) 1 1
5 (null) 1 1
6 (null) 1 1
7 4 1 2
Id
区分了文件。 parentId
显示女巫文件是其父母。因此,在我的示例中,我有1个文档,其中包含3个版本(1,2,3),2个文档没有父版本(5,6),另一个文档包含2个版本(4,7)
因此,对于这些数据,我想选择id = 3,5,6,7
的文档答案 0 :(得分:3)
您可以使用NOT EXISTS
SELECT *
FROM DocumentTable DT1
WHERE NOT EXISTS(SELECT *
FROM DocumentTable DT2
WHERE DT2.ParentId = DT1.id)