Heim > Datenbank > MySQL-Tutorial > Wie behebt man den MySQL-Fehler 1093: „Zieltabelle für Aktualisierung kann in FROM-Klausel nicht angegeben werden'?

Wie behebt man den MySQL-Fehler 1093: „Zieltabelle für Aktualisierung kann in FROM-Klausel nicht angegeben werden'?

Barbara Streisand
Freigeben: 2024-12-17 06:12:24
Original
384 Leute haben es durchsucht

How to Resolve MySQL Error 1093:

Überwindung des MySQL-Fehlers 1093: „Zieltabelle für Aktualisierung kann in der FROM-Klausel nicht angegeben werden“

Wenn MySQL-Fehler 1093 auftritt, ist dies wichtig um das zugrunde liegende Problem zu verstehen. Dieser Fehler tritt auf, wenn versucht wird, eine Tabelle zu ändern, auf die auch in der FROM-Klausel einer Abfrage verwiesen wird.

Ursache

MySQL lässt nicht zu, dass Tabellen gleichzeitig geändert werden und in der FROM-Klausel einer UPDATE- oder DELETE-Anweisung verwendet. Diese Einschränkung ist auf die Mehrdeutigkeit zurückzuführen, die durch den Zugriff auf dieselbe Tabelle für beide Vorgänge entstehen würde.

Lösung 1: Verwenden einer Unterabfrage

Eine Problemumgehung besteht darin, SELECT einzubetten Anweisung, die die beschädigten Einträge als Unterabfrage in der FROM-Klausel von UPDATE oder DELETE identifiziert Aussage:

UPDATE story_category SET category_id = NULL
WHERE category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id
);
Nach dem Login kopieren

Lösung 2: Selbstverknüpfung der Tabelle

Alternativ können Sie die Tabelle selbst verknüpfen, um separate Aliase für dieselbe Tabelle zu erstellen Sie können einen der Aliase ändern und gleichzeitig auf den anderen verweisen. Zum Beispiel:

UPDATE story_category AS updated
INNER JOIN story_category AS original
    ON updated.category_id = original.category_id
SET updated.category_id = NULL
WHERE original.category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id
);
Nach dem Login kopieren

Vermeiden eines erneuten Auftretens

Sobald die beschädigten Einträge gelöscht wurden, sollten Sie erwägen, Einschränkungen für die Tabelle „story_category“ zu implementieren, um zukünftige ungültige Einträge zu verhindern:

ALTER TABLE story_category
ADD FOREIGN KEY (category_id) REFERENCES category(id);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie behebt man den MySQL-Fehler 1093: „Zieltabelle für Aktualisierung kann in 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