SELECT
(under)frågor returnerar resultat uppsättningar . Så du måste använda IN
, inte =
i din WHERE
klausul.
Dessutom, som visas i det här svaret
du kan inte ändra samma tabell från en underfråga i samma fråga. Du kan dock antingen SELECT
sedan DELETE
i separata frågor, eller kapsla en annan underfråga och alias det inre underfrågans resultat (ser dock ganska hackigt ut):
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
Eller använd joins som föreslagits av Mchl .