使用sql查询按大小和名称查找重复项

时间:2014-03-17 08:54:23

标签: mysql sql

我有一张桌子" MyDuplicateTable"它包含所有文件entries(filepath,filesize,crc32,filename)。现在我想通过大小和文件名找出重复项。我已经尝试了下面的查询,但它只给了我一个结果。 例如:

 MyDuplicateTable:
    Filepath           Filesize CRC32 Filename
    c:\dup\a.txt          0       0     a.txt
    c:\dup\dup1\a.txt     0       0     a.txt
    c:\dup\b.txt          0       0     b.txt

现在我想通过文件名和大小找到重复项。我是查询。

 Query:"SELECT FILEPATH FROM MYDUPLICATETABLE GROUP BY FILENAME, SIZE HAVING COUNT(*)>1" Result of query:But above query returns only one record[c:\dup\a.txt]

另一个查询

  

"从MyDuplicateTable中选择Filepath,其中包含Filename   IN(从MyDuplicateTable GROUP BY文件名中选择文件名,大小为HAVING   COUNT(*)→1)"查询结果:以上查询不返回任何内容:(

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用联接来获得结果。

SELECT t1.Filepath 
FORM MyDuplicateTable t1
INNER JOIN (
  SELECT Filesize, Filename 
  FROM MyDuplicateTable 
  GROUP BY FILENAME, Filesize 
  HAVING COUNT(*) > 1
) t2 ON t1.Filesize = t2.Filesize AND t1.Filename = t2.Filename

答案 1 :(得分:0)

从MyDuplicateTable中选择Filepath,其中Filename IN(从MyDuplicateTable GROUP BY文件名中选择Filename,大小具有COUNT(文件名)> 1)"

尝试 - 如上所述在您的having子句中计数(Filename)而不是count(*)。