2013-05-22 33 views
7

Próbuję napisać zapytanie na serwerze SQL, aby sprawdzić, czy istnieje wiele wierszy dla każdej wartości skrótu.
Potrzebuję wszystkich nazw plików, w których wartość skrótu ma duplikaty.Zapytanie SQL o odnalezienie duplikatów

Wynik powinien być (oparte na moim przykładzie poniżej)

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

proszę dać mi znać.

Oto struktura tabeli

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

Proszę wysłać próbę. –

Odpowiedz

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

Doskonale ... dziękuję bardzo !! –

4

Można użyć EXISTS sprawdzić duplikatów,

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

lub 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

Pomóż mi, JW. – Freelancer