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

    Elimino righe duplicate sul db

    Ciao a tutti.

    Devo eliminare su una tabella del db mysql le righe identiche con id diverso, mantenendo solo una riga delle eventualmente doppie trovate, la tabella è la seguente:

    id | colore | taglia

    1 | rosso | 37
    2 | rosso | 37
    3 | rosso | 38
    4 | verde | 37
    5 | verde | 37
    6 | verde | 38

    il risultato deve essere

    1 | rosso | 37
    2 | rosso | 38
    3 | verde | 37
    4 | verde | 38

    mi sono visto la funzione SELECT DISTINCT con ALTER IGNORE TABLE ma non ne vengo fuori. Qualche suggerimento per un quasi novellino ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    sei sulla strada giusta...il SELECT DISTINT va bene
    Codice PHP:
    $querymysql_query("SELECT DISTINCT colore,taglia FROM tabella"); 

  3. #3
    grazie per la risposta, ma cosa ottengo esattamente con la tua query e come faccio a lasciare solo una riga delle duplicate ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    dovresti ottenere
    rosso 37
    rosso 38
    verde 37
    verde 38

    scritti solo una volta
    in pratica quando trova duplicati li scrive una volta sola

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    se è un problema solo in estrazione dei record va benissimo usare il distinct, ovviamente senza selezionare la colonna "id"

    se, invece, vuoi ripulire la tabella dai duplicati puoi fare una cosa tipo questa

    Codice PHP:
    // crei una vista
    $view "CREATE VIEW v_tua_tabella as SELECT id FROM tua_tabella GROUP BY colore, taglia";
    $query_v mysql_query($view) or die ("impossibile eseguire la query $view: " .mysql_error());

    // cancelli i record duplicati, selezionando gli id che non sono presenti nella vista
    $del "DELETE FROM tua_tabella WHERE id NOT IN (SELECT id FROM v_tua_tabella)";
    $query_d mysql_query($del) or die ("impossibile eseguire la query $del: ".mysql_error());

    // cancelli la vista (opzionale)
    $drop_view "DROP VIEW IF EXISTS v_tua_tabella";
    $drop mysql_query($drop_view) or die ("impossibile eseguire la query $drop_view: ".mysql_error()); 
    ovviamente, prima di metterti a giocare con le query di delete, fai un bel backup del DB, almeno puoi tornare indietro senza troppi problemi...

  6. #6
    ci provo grazie mille.

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.