SELECT (under)forespørgsler returnerer resultatsæt . Så du skal bruge IN , ikke = i din WHERE klausul.
Derudover, som vist i dette svar
du kan ikke ændre den samme tabel fra en underforespørgsel i den samme forespørgsel. Du kan dog enten SELECT derefter DELETE i separate forespørgsler, eller indlejr en anden underforespørgsel og alias det indre underforespørgselresultat (ser dog ret hacket ud):
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
Eller brug joins som foreslået af Mchl .