2013-05-22 2 views
7

Sto provando a scrivere una query nel server SQL per scoprire se ci sono più righe per ogni valore di hash.
Ho bisogno di tutti i nomi di file in cui il valore hash è duplicato.Query SQL per trovare i duplicati

Il risultato dovrebbe essere (sulla base degli mio esempio qui sotto)

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

Per favore fatemi sapere.

Ecco la struttura della tabella

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

Si prega di inviare il vostro tentativo. –

risposta

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

Eccellente ... grazie mille !! –

4

È possibile utilizzare EXISTS per controllare i duplicati,

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

o 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

Per favore aiutatemi JW. – Freelancer