Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie lösche ich aus Select in MySQL?

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 .