Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [MYSQL] eliminare doppioni nel db

    Ciao,
    come da titolo dovrei pulire un database dai doppioni;

    Ecco il database che ho:
    codice:
    Nome		Cognome		Mail 
    Prova		Prova		prova@prova.it
    Esempio				prova@prova.it
    Esempio		Esempio		esempio@esempio.it
    ilnome		ilcognome	mail@mail.it
    io dovrei eliminare la seconda riga, ma non la prima, perchè la seconda righa ha meno campi compilati;

    Riuscite a darmi una mano?
    Grazie a tutti!!

  2. #2
    Mi aggancio qui, anche se leggermente diverso

    io mi accontento di avere l'elenco di tutti i record che hanno uno specifico campo doppione

    nell'esempio sotto dovrebbe farmi trovare iprimi due record

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da irdg
    Mi aggancio qui, anche se leggermente diverso

    io mi accontento di avere l'elenco di tutti i record che hanno uno specifico campo doppione

    nell'esempio sotto dovrebbe farmi trovare iprimi due record
    codice:
    select tabella.* from tabella
    inner join
    (select mail,count(mail) as quanti
    from tabella group by mail
    having quanti > 1) as tb2
    on tabella.mail = tb2.mail

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: [MYSQL] eliminare doppioni nel db

    Originariamente inviato da farbulsara
    Ciao,
    come da titolo dovrei pulire un database dai doppioni;

    Ecco il database che ho:
    codice:
    Nome		Cognome		Mail 
    Prova		Prova		prova@prova.it
    Esempio				prova@prova.it
    Esempio		Esempio		esempio@esempio.it
    ilnome		ilcognome	mail@mail.it
    io dovrei eliminare la seconda riga, ma non la prima, perchè la seconda righa ha meno campi compilati;

    Riuscite a darmi una mano?
    Grazie a tutti!!
    codice:
    select * from tabella as t1
    join ( select *,
    	if(campo1 is null or campo1 = "",0,1)+
    	if(campo2 is null or campo2 = "",0,1)+
            .......... +
    	if(campoN is null or campoN = "",0,1) as popolati
    	from tabella
    	order by popolati desc ) as t2
    	on t1.id = t2.id
    group by t1.mail

  5. #5

    Re: Re: [MYSQL] eliminare doppioni nel db

    Originariamente inviato da nicola75ss
    codice:
    select * from tabella as t1
    join ( select *,
    	if(campo1 is null or campo1 = "",0,1)+
    	if(campo2 is null or campo2 = "",0,1)+
            .......... +
    	if(campoN is null or campoN = "",0,1) as popolati
    	from tabella
    	order by popolati desc ) as t2
    	on t1.id = t2.id
    group by t1.mail
    Ciao Nicola, grazie per la risposta, ma la sql mi restituisce questo errore:
    #1054 - Unknown column 't1.id' in 'on clause'

    come posso risolverlo, grazie

    P.S. se puo essere utile, utilizzo MySQL 5.1

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ovviamente devi mettere al posto di id il nome del TUO campo che hai usato come chiave primaria

  7. #7
    Originariamente inviato da nicola75ss
    codice:
    select tabella.* from tabella
    inner join
    (select mail,count(mail) as quanti
    from tabella group by mail
    having quanti > 1) as tb2
    on tabella.mail = tb2.mail
    La funzione funziona...

    Nel mentre avevo trovato anche questa soluzione...

    SELECT * FROM tabella t1 where(select count(*) from tabella t2 where t1.mail=t2.mail)>1;

    purtroppo mi trovo a guardare circa 15000 record... e ambedue non arrivano in fondo

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da irdg
    purtroppo mi trovo a guardare circa 15000 record... e ambedue non arrivano in fondo
    Cioè?

  9. #9
    vanno in time out

    pensavo però di risolverlo estrapolando tutte le mail doppie, e poi verificarle singolarmente

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prova ad indicizzare il campo mail

    alter table tabella add index prova (mail)

    e a rilanciare la query

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.