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
Susan SarandonOriginal
2024-12-23 16:11:11892Durchsuche

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

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);

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';

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;

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!

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