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>
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 ) )
Considérations supplémentaires :
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 )
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!