Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment supprimer de select dans MySQL?

SELECT les (sous-)requêtes renvoient des ensembles de résultats . Vous devez donc utiliser IN , pas = dans votre WHERE clause.

De plus, comme indiqué dans cette réponse vous ne pouvez pas modifier la même table à partir d'une sous-requête dans la même requête. Cependant, vous pouvez soit SELECT puis DELETE dans des requêtes séparées, ou imbriquez une autre sous-requête et aliasez le résultat de la sous-requête interne (cela semble plutôt piraté, cependant) :

DELETE FROM posts WHERE id IN (
    SELECT * FROM (
        SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
    ) AS p
)

Ou utilisez les jointures comme suggéré par Mchl .