2013-05-22 158 views
7

我正试图在SQL服务器中编写一个查询,以查明每个哈希值是否有多行。
我需要散列值重复的所有文件名。SQL查询查找重复项

其结果应是(根据我下面的例子)

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

请发表您的尝试。 –

回答

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

非常好...非常感谢你! –

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 
+0

请帮我JW。 – Freelancer