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
703 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!

source:php.cn
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