SELECT
(sub)consultas devuelven resultados conjuntos . Entonces necesitas usar IN
, no =
en tu WHERE
cláusula.
Además, como se muestra en esta respuesta
no puede modificar la misma tabla desde una subconsulta dentro de la misma consulta. Sin embargo, puede SELECT
luego DELETE
en consultas separadas, o anidar otra subconsulta y crear un alias para el resultado de la subconsulta interna (aunque parece bastante extraño):
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
O use uniones como lo sugiere Mchl .