MySQL-Fehler 1093: Die Einschränkung verstehen und überwinden
In MySQL wird versucht, eine Tabelle zu ändern, auf die auch in der FROM-Klausel von verwiesen wird Dieselbe Abfrage kann zu folgendem Fehler führen: „Sie können die Zieltabelle ‚table_name‘ für die Aktualisierung nicht in der FROM-Klausel angeben.“ Diese Einschränkung ergibt sich aus der Unfähigkeit von MySQL, solche Vorgänge direkt auszuführen.
Um dieses Problem zu lösen, können mehrere Ansätze in Betracht gezogen werden:
Die Tabelle mit sich selbst verbinden
Eine Möglichkeit besteht darin, die Tabelle mit geeigneten Auswahlkriterien mit sich selbst zu verbinden und so aus MySQL-Sicht zwei unterschiedliche Instanzen der Tabelle zu erstellen. Dadurch können destruktive Vorgänge auf einer Instanz ausgeführt werden, während die andere unberührt bleibt.
Unterabfragen in der FROM-Klausel verschachteln
Eine alternative Problemumgehung besteht darin, die Unterabfrage zu verschachteln, die das Ziel generiert Zeilen zum Löschen innerhalb einer tieferen FROM-Klausel. Dadurch wird aus der Unterabfrage eine implizite temporäre Tabelle erstellt, die MySQL als von der Zieltabelle getrennte Entität erkennt. Dieser Ansatz kann sich jedoch auf die Leistung auswirken.
Deaktivieren der Optimiereroptimierung (MySQL 5.7.6 und höher)
Ab MySQL 5.7.6 optimiert der Optimierer möglicherweise die Unterabfrage in der FROM-Klausel, wodurch der Fehler weiterhin besteht. Um dies zu umgehen, deaktivieren Sie die Optimierung mithilfe der Variable „optimierer_switch“:
SET optimizer_switch = 'derived_merge=off';
Beachten Sie, dass dies als kurzfristige Lösung oder für kleine einmalige Aufgaben empfohlen wird, da es sich negativ auf die Gesamtabfrageleistung auswirken kann.
Fazit
Der Fehler „Sie können die Zieltabelle ‚table_name‘ für die Aktualisierung nicht in der FROM-Klausel angeben“ ergibt sich aus der Einschränkung von MySQL beim Ändern einer Tabelle, die auch in der FROM-Klausel verwendet wird. Durch den Einsatz der oben beschriebenen Methoden können Entwickler diese Einschränkung überwinden und die gewünschten Vorgänge an ihren Daten durchführen.
Das obige ist der detaillierte Inhalt vonSo lösen Sie den MySQL-Fehler 1093: „Sie können die Zieltabelle ‚table_name' für die Aktualisierung nicht in der FROM-Klausel angeben'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!