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)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.

Nella stessa categoria

Commenti

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - AZ - Il blog di Andrea Zani

TagCloud
BLOG INFO
  • Post: 254
  • Commenti: 159
  • TrackBacks: 33
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA