查找重复项的SQL查询

8

我正在尝试在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
Please post your attempt. - Mitch Wheat
2个回答

15
select * 
from File 
where hash in (select 
               hash 
               from File
               group by hash
               having count(*) > 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接