SELECT
(sub)query's retourneren resultaat sets . U moet dus IN
. gebruiken , niet =
in je WHERE
clausule.
Bovendien, zoals weergegeven in dit antwoord
u kunt dezelfde tabel niet wijzigen vanuit een subquery binnen dezelfde query. U kunt echter ofwel SELECT
dan DELETE
in afzonderlijke zoekopdrachten, of nest een andere subquery en alias het resultaat van de binnenste subquery (ziet er echter nogal hacky uit):
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
Of gebruik joins zoals voorgesteld door Mchl .