In questo articolo spiegherò come selezionare (e poi eventualmente eliminare) i record duplicati di una tabella, usando SQL 2005.
Può capitare che in una tabella ci siano dei record (righe) duplicati. Rintracciarli per poi eliminarli è sempre una faccenda noisa.
Per fare questo possiamo avvalerci della funzione di numerazione righe ROW_NUMBER() di MS SQL Server 2005.
Ad esempio, questa query:
SELECT ROW_NUMBER() OVER(PARTITION BY PART_IVA ORDER BY CODICE) AS [RowNumber] , PART_IVA , CODICE FROM CLIENTI
elencherà tutti i Clienti, numerandoli progressivamente quando hanno la stessa Partita IVA ( … PARTITION BY PART_IVA … ).
Per evidenziare i duplicati, basterà aggiungere una WHERE, così
SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY PART_IVA ORDER BY CODICE) AS [RowNumber] , PART_IVA , CODICE FROM CLIENTI ) AS T1 WHERE RowNumber>1
Similarmente, potremo usare lo stesso stratagemma per eliminare tutti i doppioni
DELETE T1 FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY PART_IVA ORDER BY CODICE) AS [RowNumber] , PART_IVA , CODICE FROM CLIENTI ) AS T1 WHERE T1.RowNumber >1
Interesting to know.
Fantastisco articolo, fa esattamente quello che serve al caso mio!
GRAZIE!
🙂
GRAZIE MILLE! Mi hai risparmiato un sacco di tempo! 🙂
eccezionale davvero…
proprio quello che serviva a me!! in un momento ho risolto quello che pensavo essere un bel pasticcio!
articolo spettacolare!!!
grazie davvero, è stato utilissimo!
Complimenti x la chiarezza!