删除具有特定条件sql的重复项

时间:2011-06-15 15:11:00

标签: sql sqlite

我正在记录目录中所做的更改。该目录有很多文件,所以我试图通过删除重复项来减少数据库的大小。但为了清楚明白,让我告诉你我拥有的东西。

我有一个名为table1的表

enter image description here

从查看此表我可以看出,我第一次扫描目录时,我有两个文件A和B.下次我扫描目录时,我知道我已经添加了文件C并通过查看修改了文件A.表。请注意,文件A具有不同的DateModified,这就是我可以对其进行修改的原因。最后,在我上次扫描时,我知道文件X已经创建,文件B也已被修改。文件A和C保持不变。

创建大量扫描后,有几个文件会重复出现。如果他们有不同的DateModified我不想删除重复项,因为我想跟踪该目录的更改。此外,当删除重复项时,我希望保留较低的DateInserted,以便我可以知道它何时被修改。

所以换句话说我想构建一个查询,我可以删除FileID 6,因为FileID 3包含相同的路径和相同的DateModified。我还想删除FileID 4,因为fileID 2包含相同的两个记录。最后我想出于同样的原因删除fileID 5。我怎么能建立这个查询?

修改

我只是添加了我一直在使用的查询,希望它可以提供帮助。

enter image description here

使用此查询我知道这些是根据我需要的标准重复的文件。我不知道如何去那里并根据这些结果删除更高的dateInserted重复。希望这有帮助

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要独特的记录,其中唯一的记录有资格作为一个独特的路径& DateModified组合,当发生重复时,您希望返回最早的记录。

这个查询应该有希望做到这一点: SELECT MIN(FileID)AS FileID,Path,datemodified,dateInserted FROM table1 GROUP BY Path,DateModified