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

So beheben Sie den MySQL-Fehler Sie können die Zieltabelle X nicht für die Aktualisierung in der FROM-Klausel angeben?

Der Grund, warum dies nicht funktioniert, ist, dass MySQL es Ihnen nicht erlaubt, innerhalb einer Unterabfrage auf die Tabelle zu verweisen, die Sie aktualisieren (cancome).

Dies kann jedoch überwunden werden, indem eine Abfrage anstelle der Tabelle selbst im FROM verwendet wird, was dazu führt, dass die angeforderten Tabellenwerte kopiert werden, anstatt auf den zu verweisen, den Sie aktualisieren.

So effektiv wird dies funktionieren, auch wenn es kontraintuitiv ist:

DELETE FROM cancome WHERE user_id IN
 ( SELECT user_id FROM (SELECT * FROM cancome) AS cancomesub
 GROUP BY user_id HAVING COUNT(user_id)>3 )
 limit 3