Cancellare i record duplicati nelle tabelle di un database

di Andrea Zani, in Memo,

Me lo segno sul mio blog perché è una di quelle funzioni che mi servono raramente, ma che vengono utili in certe occasioni e fanno perdere sempre quei tre minuti da utilizzare meglio, come per bersi un caffè.

Ipotizzando di avere la tabella:

cod (chiave)articolodata
1aaaa1/1/2000
2aaaa1/1/2000
3aaaa2/1/2000
4bbbb3/1/2000
5bbbb3/1/2000

Se volessi cancellare tutti i record che hanno articolo e data duplicato, posso scrivere:

delete test_cancellazione from test_cancellazione tc1
left join (select min(cod) as cod from test_cancellazione
group by articolo, data ) tc2 on tc1.cod=tc2.cod
 where tc2.cod is null 

Una volta eseguito questo codice la tabella si ridurrebbe a questi record:

cod (chiave)articolodata
1aaaa1/1/2000
3aaaa2/1/2000
4bbbb3/1/2000

Se volessi, invece, cancellare tutti i record che hanno solo il campo articolo uguale, dovrei inserire solo il nome di quel campo nel group by della query qui sopra.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese