2013-05-22 192 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