Cancellare i record duplicati nelle tabelle di un database
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) | articolo | data |
| 1 | aaaa | 1/1/2000 |
| 2 | aaaa | 1/1/2000 |
| 3 | aaaa | 2/1/2000 |
| 4 | bbbb | 3/1/2000 |
| 5 | bbbb | 3/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) | articolo | data |
| 1 | aaaa | 1/1/2000 |
| 3 | aaaa | 2/1/2000 |
| 4 | bbbb | 3/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.
Nella stessa categoria
Per inserire un commento, devi registrarti alla nostra community.
© 1998-2008 - AZ - Il blog di Andrea Zani





Stampa
Download 
