SELECT (pod)dotazy vrátí výsledek sady . Musíte tedy použít IN , nikoli = ve vašem WHERE doložka.
Navíc, jak je uvedeno v tato odpověď
nemůžete upravit stejnou tabulku z poddotazu v rámci stejného dotazu. Můžete však buď SELECT pak DELETE v samostatných dotazech nebo vnořte další poddotaz a alias výsledku vnitřního poddotazu (i když to vypadá dost otřepaně):
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
Nebo použijte spojení jak navrhuje Mchl .