Heim >Datenbank >MySQL-Tutorial >Wie löst man den MySQL-Fehler 1093: Die Zieltabelle kann in der FROM-Klausel nicht angegeben werden?
MySQL-Fehler 1093: Zieltabelle kann in der FROM-Klausel nicht angegeben werden
Beim Versuch, eine Aktualisierungsabfrage für eine Tabelle auszuführen, auf die in verwiesen wird Wenn Sie die FROM-Klausel verwenden, tritt möglicherweise der MySQL-Fehler 1093 auf. Dies liegt daran, dass MySQL Änderungen an Tabellen verbietet, die direkt an der Auswahl beteiligt sind Prozess.
Eine Alternative besteht darin, die Tabelle mit sich selbst zu verbinden. Indem Sie einen Alias für die Tabelle erstellen, können Sie mehrmals daraus auswählen und die ursprüngliche Tabelle ändern, ohne dass der Fehler auftritt:
UPDATE tbl AS a INNER JOIN tbl AS b ON a.id = b.id SET a.col = b.col
Eine andere Lösung besteht darin, die Unterabfrage tiefer in der FROM-Klausel zu verschachteln:
UPDATE tbl SET col = ( SELECT ... FROM (SELECT.... FROM) AS x);
Diese Problemumgehung erstellt eine implizite temporäre Tabelle aus der Unterabfrage und ermöglicht so eine Aktualisierung ohne Fehler. Diese Methode kann jedoch Auswirkungen auf die Leistung haben.
Es ist wichtig zu beachten, dass in MySQL 5.7.6 und höher der Optimierer möglicherweise die Unterabfrage optimiert, was zu demselben Fehler führt. Wenn dies bei Ihnen auftritt, sollten Sie die Optimierung vorübergehend deaktivieren:
SET optimizer_switch = 'derived_merge=off';
Das obige ist der detaillierte Inhalt vonWie löst man den MySQL-Fehler 1093: Die Zieltabelle kann in der FROM-Klausel nicht angegeben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!