Supprimer les doublons d'une table mysql

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par poupilou, 16 Juin 2020.

  1. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Salut à tous,

    J'essaie de supprimer les doublons d'une de mes tables MySQL, pour cela je me suis inspiré de ce tuto mais j'ai un peu de mal avec la requête qui supprime les doublons.

    Voici les 3 colonnes de ma table MySQL qui m'intéressent :
    La colonne "Num" est du type int et sa valeur est unique.

    La colonne "Num produit" est du type vachar et il peut y avoir des doublons dans cette colonne.

    La colonne "Prix total" est du type decimal.

    Je cherche les doublons de ma colonne "Num produit" et je souhaite supprimer ces doublons en fonction de leur prix, qui sont classés du plus grand au plus petit. On laisse donc dans la table le produit qui est le moins cher.

    Voici la requête mysql que j'ai faite :

    Code:
    $result = get_requete("SELECT COUNT(*) AS nbr_doublon, `Num produit` FROM `$stock_produits` WHERE $stock_produits.`Num produit`!='' AND $stock_produits.`Num produit`!='0' AND $stock_produits.`Num produit`!='1' GROUP BY `Num produit` HAVING COUNT(*) > 1");
    while($voir = $MysqliFetchArray($result))
    {
    get_requete("DELETE FROM `$stock_produits`
    LEFT OUTER JOIN (
            SELECT MAX(Prix total) as prix, `Num produit`, `Prix total`
            FROM `$stock_produits`
            GROUP BY `Num produit`
        ) as t1
        ON `$stock_produits`.`Prix total` = t1.prix
    WHERE t1.prix IS NULL");
    
    Cette requête ne supprime pas les doublons, voyez-vous des erreurs dans ma requête MySQL ci-dessus ?

    Merci pour votre aide.
     
  2. Nico998
    Nico998 Nouveau WRInaute
    Inscrit:
    4 Avril 2013
    Messages:
    24
    J'aime reçus:
    4
    Bonjour,

    La requête est un peu compliquée, mais peut-être en passant sur une jointure de la table sur elle-même ça serait plus simple

    Voici une requête (non testée) qui :
    • Supprime les doublons en cas de prix supérieur
    • Conserve qu'une seule ligne en cas de prix équivalent.
    Code:
    SELECT DISTINCT A.NUM
    FROM `$stock_produits` A, FROM `$stock_produits` B
    WHERE A.`Num produit` = B.`Num produit`
    AND ((A.NUM <> B.NUM AND A.PRIX > B.PRIX)
    OR (A.NUM > B.NUM AND A.PRIX = B.PRIX))
    Il resterait à mettre tout ça dans un DELETE

    J'espère que ça pourra t'aider
     
    #2 Nico998, 16 Juin 2020
    Dernière édition: 16 Juin 2020
  3. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Merci pour ta réponse.

    Etant donné que j'ai beaucoup de données dans ma table, j'ai trouvé cette solution qui est très rapide pour supprimer les doublons de ma table :

    Code:
    -- Create temporary table
    CREATE TABLE temp_table LIKE `$stock_produits`;
    
    -- Add constraint
    ALTER TABLE temp_table ADD UNIQUE(Num produit);
    
    -- Copy data
    INSERT IGNORE INTO temp_table SELECT * FROM `$stock_produits`;
    
    -- Rename and drop
    RENAME TABLE `$stock_produits` TO old_table1, temp_table TO `$stock_produits`;
    DROP TABLE old_table1;
    
     
Chargement...
Similar Threads - Supprimer doublons table Forum Date
requette supprimer les doublons mysql Développement d'un site Web ou d'une appli mobile 25 Février 2010
faut il supprimer un ancien sitemap ? Crawl et indexation Google, sitemaps 6 Mai 2020
Supprimer le sitemap HTML et garder le XML Crawl et indexation Google, sitemaps 27 Avril 2020
Déplacer le contenu d'une page puis la supprimer Problèmes de référencement spécifiques à vos sites 24 Avril 2020
Page Facebook pour l'entreprise et profil à supprimer Facebook 17 Avril 2020
Supprimer un site pour créer une copie = risque de "duplicate" ? Crawl et indexation Google, sitemaps 1 Mars 2020
WordPress Comment supprimer les 3 balises H1 de trop dans la page ? Débuter en référencement 27 Février 2020
Etapes à suivre pour supprimer une url de google Netlinking, backlinks, liens et redirections 29 Décembre 2019
supprimer /index.html sans url rewriting, possible ? URL Rewriting et .htaccess 13 Novembre 2019
Pages zombies, supprimer 20% des pages ? Crawl et indexation Google, sitemaps 23 Octobre 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice