SELECT
Le (sotto)query restituiscono il risultato set . Quindi devi usare IN
, non =
nel tuo WHERE
clausola.
Inoltre, come mostrato in questa risposta
non è possibile modificare la stessa tabella da una sottoquery all'interno della stessa query. Tuttavia, puoi sia SELECT
quindi DELETE
in query separate o annidare un'altra sottoquery e alias il risultato della sottoquery interna (sembra piuttosto hacky, però):
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
Oppure usa i join come suggerito da Mchl .