Heim > Datenbank > MySQL-Tutorial > Wie kann ich den MySQL-Fehler 1093 beheben: Die Zieltabelle für die Aktualisierung kann in der FROM-Klausel nicht angegeben werden?

Wie kann ich den MySQL-Fehler 1093 beheben: Die Zieltabelle für die Aktualisierung kann in der FROM-Klausel nicht angegeben werden?

Mary-Kate Olsen
Freigeben: 2024-12-17 10:59:26
Original
663 Leute haben es durchsucht

How Can I Resolve MySQL Error 1093: Can't Specify Target Table for Update in FROM Clause?

MySQL-Fehler 1093: Verständnis der Einschränkung bei Tabellenaktualisierungen in der FROM-Klausel

Der MySQL-Fehler „Sie können die Zieltabelle 'table_name' nicht angeben „for update in FROM-Klausel“ tritt auf, wenn versucht wird, eine Tabelle innerhalb ihrer eigenen SELECT-Anweisung zu ändern. Diese Einschränkung ergibt sich aus der Unfähigkeit von MySQL, gleichzeitig eine Tabelle im selben Vorgang zu aktualisieren und darauf zu verweisen.

Behebung des Fehlers

Um dieses Problem zu lösen, ziehen Sie die folgenden Ansätze in Betracht:

  • Die Tabelle mit sich selbst verbinden:
    Die auszuführende Abfrage neu anordnen ein Self-Join für die Tabelle, wodurch eine temporäre Tabelle erstellt wird. Dies ermöglicht Aktualisierungen der Originaltabelle:
UPDATE story_category a
INNER JOIN story_category b ON a.category_id = b.category_id
SET a.category_id = ...
Nach dem Login kopieren
  • Tieferes Verschachteln der Unterabfrage:
    Verschachteln Sie die Unterabfrage, die die beschädigten Einträge identifiziert, in einer anderen Unterabfrage. Erstellen eines impliziten Temporären Tabelle:
UPDATE story_category
SET category_id = (
  SELECT id
  FROM (
    SELECT id
    FROM category
    EXCEPT
    SELECT DISTINCT category_id
    FROM story_category
  ) AS x
)
Nach dem Login kopieren
  • Abfrageoptimierung deaktivieren:
    Bei MySQL-Versionen 5.7.6 und höher versucht der Optimierer möglicherweise, die Unterabfrage zu entfernen. Um dies zu verhindern, deaktivieren Sie „optimierer_schalter“:
SET optimizer_switch = 'derived_merge=off';
Nach dem Login kopieren

Hinweis: Das Deaktivieren des Abfrageoptimierers ist keine empfohlene langfristige Lösung und sollte nur als vorübergehende Lösung verwendet werden. Erwägen Sie alternative Ansätze für eine effizientere Datenbankwartung.

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