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
Freigeben: 2024-12-22 07:29:09
Original
617 Leute haben es durchsucht

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
Nach dem Login kopieren

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);
Nach dem Login kopieren

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';
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage