Maison > base de données > tutoriel mysql > Comment supprimer des lignes d'une table MySQL en fonction des résultats d'une instruction Select ?

Comment supprimer des lignes d'une table MySQL en fonction des résultats d'une instruction Select ?

Barbara Streisand
Libérer: 2024-12-26 14:25:10
original
763 Les gens l'ont consulté

How to Delete Rows from a MySQL Table Based on a Select Statement's Results?

Suppression d'une instruction Select dans MySQL

Question :

Comment supprimer des lignes d'une table MySQL en fonction de les résultats d'une instruction select ?

Code (MySQL 5.0) :

DELETE FROM posts where>
Copier après la connexion

Problème :

Le code ci-dessus ne fonctionne pas dans MySQL 5.0 et vous souhaitez trouver une solution fonctionnelle. Votre objectif est de supprimer les lignes qui n'ont pas d'identifiant unique.

Réponse :

Utilisation de IN :

Dans MySQL , les sous-requêtes renvoient des jeux de résultats. Pour utiliser les résultats d'une sous-requête dans une instruction DELETE, vous devez utiliser l'opérateur IN au lieu du signe égal (=) dans votre clause WHERE.

Code modifié :

DELETE FROM posts WHERE id IN (
    SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
)
Copier après la connexion

Considérations supplémentaires :

  • Vous ne pouvez pas modifier la même table à partir de une sous-requête dans la même requête.
  • Vous pouvez exécuter des requêtes SELECT et DELETE distinctes ou utiliser des sous-requêtes imbriquées pour obtenir le résultat souhaité.
  • Une approche alternative consiste à utiliser des jointures, comme suggéré par Mchl :
DELETE FROM posts p1
WHERE p1.id = (
    SELECT p2.id 
    FROM posts p2
    WHERE p2.id = p1.id
    GROUP BY p2.id
    HAVING COUNT(p2.id) > 1
)
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal