Heim > Datenbank > MySQL-Tutorial > Wie kann ich den MySQL-Fehler 1093 beheben: „In der FROM-Klausel kann keine Zieltabelle für die Aktualisierung angegeben werden'?

Wie kann ich den MySQL-Fehler 1093 beheben: „In der FROM-Klausel kann keine Zieltabelle für die Aktualisierung angegeben werden'?

Susan Sarandon
Freigeben: 2024-12-23 16:11:11
Original
851 Leute haben es durchsucht

How Can I Fix MySQL Error 1093:

Überwindung des MySQL-Fehlers 1093: Aktualisieren der in der FROM-Klausel angegebenen Tabellen

MySQL-Fehler 1093 tritt auf, wenn versucht wird, eine Tabelle zu aktualisieren, die auch in verwendet wird die FROM-Klausel derselben Abfrage. Um diesen Fehler zu beheben, ziehen Sie die folgenden Ansätze in Betracht:

Verknüpfen der Tabelle mit sich selbst

Wenn möglich, verbinden Sie die Tabelle mithilfe geeigneter Auswahlkriterien mit sich selbst. Dadurch kann MySQL die Tabelle als separate Einheiten anzeigen und destruktive Änderungen vornehmen:

UPDATE tbl AS a
INNER JOIN tbl AS b ON ....
SET a.col = b.col
Nach dem Login kopieren

Verschachtelung der Unterabfrage tiefer in der FROM-Klausel

Alternativ verschachteln die Unterabfrage tiefer in die FROM-Klausel ein, um eine implizite temporäre Tabelle zu erstellen:

UPDATE tbl SET col = (
  SELECT ... FROM (SELECT.... FROM) AS x);
Nach dem Login kopieren

Allerdings Die Methode ist weniger effizient und wird in bestimmten Versionen vom MySQL-Abfrageoptimierer möglicherweise nicht richtig optimiert.

Abfrageoptimierer deaktivieren

In MySQL-Versionen 5.7.6 und höher der Optimierer kann die Unterabfragestrategie verhindern. Um die Optimierung vorübergehend zu deaktivieren, legen Sie die Variable „optimierer_schalter“ fest:

SET optimizer_switch = 'derived_merge=off';
Nach dem Login kopieren

Beispiel-Löschabfrage

Um die spezifische Abfrage in der Frage zu beantworten, verknüpfen Sie die Tabelle „story_category“ mit der Kategorietabelle, um die beschädigten Einträge zu identifizieren und zu löschen:

DELETE t1
FROM story_category AS t1
INNER JOIN category AS t2
ON t1.category_id = t2.id
WHERE t2.id IS NULL;
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass Sie durch den Einsatz dieser Techniken das Problem beheben können Fehler „Die Zieltabelle für die Aktualisierung kann in der FROM-Klausel nicht angegeben werden“ und die erforderlichen Änderungen an Ihren Datenbanktabellen durchführen.

Das obige ist der detaillierte Inhalt vonWie kann ich den MySQL-Fehler 1093 beheben: „In der FROM-Klausel kann keine Zieltabelle für die Aktualisierung 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