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 .