Supprimer les lignes en double dans MySQL sans scripts externes
Dans certains cas, vous devrez peut-être supprimer les lignes en double dans une table MySQL en fonction d'une combinaison spécifique de colonnes. Ce qui suit explique comment y parvenir en utilisant uniquement des requêtes SQL, en évitant les scripts côté serveur.
Contexte
Comme indiqué dans la question initiale, le tableau contient plusieurs colonnes, notamment « id », « url », « title », « company » et « site_id ». L'objectif est de supprimer les lignes où « titre », « entreprise » et « site_id » ont la même valeur.
Solution
Un moyen efficace de supprimer les lignes en double consiste à utiliser un index UNIQUE sur ces trois colonnes. La syntaxe pour créer un tel index est la suivante :
<code class="language-sql">ALTER IGNORE TABLE jobs ADD UNIQUE INDEX idx_name (site_id, title, company);</code>
Veuillez noter que le mot-clé « IGNORE » est utilisé dans la déclaration. Cela indique à MySQL d'ignorer les lignes en double lors de la création de l'index. Cela signifie que ces lignes en double seront supprimées du tableau.
Avantages supplémentaires
En plus de supprimer les lignes en double existantes, l'ajout d'un index UNIQUE empêche l'insertion de lignes en double à l'avenir. Toute tentative d'insertion d'une ligne où une combinaison de « site_id », « title » et « company » existe déjà entraînera une erreur.
Remarque :
Veuillez noter que cette fonctionnalité a été supprimée dans MySQL 5.7 et versions ultérieures. Cette solution ne fonctionne donc plus avec ces versions de MySQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!