SQL查询以查找重复项

时间:2013-05-22 09:10:30

标签: sql duplicates

我正在尝试在SQL Server中编写一个查询,以查明每个哈希值是否有多行 我需要哈希值有重复的所有文件名。

结果应该是(基于我下面的例子)

003B4C68BC143B0290E04432A3A96092    File0003.jpg
003B4C68BC143B0290E04432A3A96092    File0004.jpg
003B4C68BC143B0290E04432A3A96092    File0005.jpg

请告诉我。

这是表结构

File table
-----------------------------------------
hash          FileName
---------------------------------------
000341A486F5492877D588BED0806650    File0001.jpg
00363EF2ECEEA32F10176EB64A50283F    File0002.jpg
003B4C68BC143B0290E04432A3A96092    File0003.jpg
003B4C68BC143B0290E04432A3A96092    File0004.jpg
003B4C68BC143B0290E04432A3A96092    File0005.jpg

2 个答案:

答案 0 :(得分:15)

select * 
from File 
where hash in (select 
               hash 
               from File
               group by hash
               having count(*) > 1)

答案 1 :(得分:4)

您可以使用EXISTS检查重复项,

SELECT  a.*
FROM    TableName a
WHERE   EXISTS
        (
            SELECT  1
            FROM    Tablename b
            WHERE   a.hash = b.hash
            GROUP   BY hash
            HAVING  COUNT(*) > 1
        )

INNER JOIN

SELECT  a.*
FROM    [File] a
        INNER JOIN
        (
            SELECT  hash
            FROM    [File] b
            GROUP   BY hash
            HAVING  COUNT(*) > 1
        ) b ON  a.hash = b.hash
相关问题