Maison >base de données >tutoriel mysql >Comment supprimer les lignes en double dans MySQL en utilisant uniquement des requêtes SQL ?

Comment supprimer les lignes en double dans MySQL en utilisant uniquement des requêtes SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-24 02:15:09457parcourir

How to Remove Duplicate Rows in MySQL Using Only SQL Queries?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn