[Php-it] [MySQL] eliminare duplicati..

Domenico L. domenico.lorusso at pleiade.it
Thu Sep 21 12:59:01 CEST 2006


Luca Benni ha scritto:
> scusate la question..
>  
> come faccio con una query a eliminare simil-duplicati all'interno di 
> un database..?!
> li ho chiamati simil duplicati perchè in realtà tutti i valori dei 
> campi sono uguali tranne quelli dell'ID...
> mannaggia mannaggia.. in pratica sono dei record inseriti per errore 
> due volte..
>  
> L.
brutta cosa

io mysql non lo conosco benissimo... cmq
fai una select raggruppando tutti i campi tranne id,
Prendendo min(id)
e having count(*)>1


Questi sono i tuoi dati da tenere salvare.

dopo di che fai una delete dove tutti i campi sono uguali a quelli 
risultanti dalla prima query ma id è maggiore:

delete from tabella
where id in (

select id
from tabella t, (
    select min(id) id, campo1... campoN
    from tabella
    group by campo1,..,campoN
    having count(id)>1
    ) b
where t.campo1=b.campo1
    and ...
    and t.campoN=b.campoN
    and t.id>t.id
)


Questo se usi mysql 4.1 o forse addirituttura il 5 altrimenti di fare 
queste cose in più passaggi con tabelle di appoggio...


Ciao

-- 
Domenico L.

per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]



More information about the Php-it mailing list