Visualizzazione dei risultati da 1 a 8 su 8

Discussione: record duplicati

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    417

    record duplicati

    ho questo problema ho un dbase don 300.000 record con questo:
    $sql2 = "
    SELECT n1, n2, n3, n4, COUNT( * ) AS cont
    FROM tabella
    GROUP BY n1,n2,n3,n4
    HAVING COUNT( * ) > 1";
    $rssql = mysql_query( $sql2 );
    $num_record2 = mysql_num_rows( $rssql );
    echo $num_record2
    riesco a vedere che ci sono 19 record duplicati, adesso dovrei sapere quali sono irecord duplicati, in quanto non dovrei eliminarli ma effettuare delle correzioni.
    come posso fare a sapere quali sono i record? ovvero posso sapere gli id di tali record? come posso fare?
    grazie

  2. #2
    SELECT tutte le colonne, COUNT( * ) AS cont
    FROM tabella
    GROUP BY n1,n2,n3,n4
    HAVING COUNT( * ) > 1
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    417
    Si questo va bene infatti mi ricava che ci sono 19 record uguali ma non saprei come sapere quali sono i record, è questo che mi interessa, siccome ci sono oltre 300.000 record dovrei sapere quali sono i duplicati per fare le dovute correzioni. dovrei avere a video gli id.

  4. #4
    Leggi bene: ho scritto "tutte le colonne"
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    417
    si ma sono tutte le colonne, a video mi risponde solo il n. 19.
    se poi faccio:
    $sql2 = "
    SELECT * COUNT( * ) AS cont
    FROM tabella
    GROUP BY n1,n2,n3,n4
    HAVING COUNT( * ) > 1";
    $rssql = mysql_query( $sql2 );
    $num_record2 = mysql_num_rows( $rssql );
    echo $num_record2
    SELECT *, (CON VIRGOLA O SENZA VIRGOLA UGUALE)
    il risultato è sempre quello mi scrive solo 19 e non mi indica gli id dei record doppiati

  6. #6
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Usa la tua query come subquery di un'altra in cui aggiungi le colonne che ti servono per identificarlo

    Vedi qui: http://stackoverflow.com/questions/8...cords-in-mysql

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    417
    Ciao comas17, ti ringrazio ma purtroppo non capisco molto bene l'inglese, mi potresti fare tu un esempio?
    grazie

  8. #8
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Ammesso che la tua tabella abbia un campo ID che puoi usare per identificare univocamente i record dovrebbe essere qualcosa del tipo

    select a.id, a.n1 from tabella a inner join (select n1 from tabella group by n1 having count (id) > 1) dup on a.n1 = dup.n1

    (e poi fai lo stesso con n2, n3, etc)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.