Cancellare i record duplicati nelle tabelle di un database

Andrea Zani

di Andrea Zani, in Memo, domenica 15 aprile 2007 ore 18.02

Archiviato in: ,

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

Per inserire un commento, devi avere un account.

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



Segnala su: Facebook MSDN Social Twitter Segnalo Wikio Diggita Technorati Stumbleupon Google Yahoo FriendFeed Delicious Furl

Nella stessa categoria
I più letti del mese
TagCloud
BLOG INFO
  • 295 post, 201 commenti, 36 trackback
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom
IN EVIDENZA