Heim >Datenbank >MySQL-Tutorial >Wie löst man den MySQL-Fehler 1093: Die Zieltabelle kann in der FROM-Klausel nicht angegeben werden?

Wie löst man den MySQL-Fehler 1093: Die Zieltabelle kann in der FROM-Klausel nicht angegeben werden?

Susan Sarandon
Susan SarandonOriginal
2024-12-22 07:29:09600Durchsuche

How to Solve MySQL Error 1093: Can't Specify Target Table in FROM Clause?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn