SELECT
(Unter-)Abfragen geben Ergebnissätze zurück . Sie müssen also IN
verwenden , nicht =
in Ihrem WHERE
Klausel.
Darüber hinaus, wie in diese Antwort
Sie können dieselbe Tabelle nicht von einer Unterabfrage innerhalb derselben Abfrage ändern. Sie können jedoch entweder SELECT
dann DELETE
in separaten Abfragen, oder verschachteln Sie eine andere Unterabfrage und aliasieren Sie das Ergebnis der inneren Unterabfrage (sieht jedoch ziemlich abgehackt aus):
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
Oder verwenden Sie Joins wie von Mchl vorgeschlagen .