Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL beim Aktualisieren einer Tabelle mithilfe einer Unterabfrage den Fehler 1093 aus?
MySQL-Fehler 1093: Aktualisierung der Zieltabelle in Unterabfrage
Beim Versuch, die folgende Abfrage in MySQL auszuführen:
UPDATE giveaways SET winner = '1' WHERE ID = (SELECT MAX(ID) FROM giveaways)
Möglicherweise tritt der folgende Fehler auf:
#1093 - You can't specify target table 'giveaways' for update in FROM clause
Dieser Fehler tritt auf, weil MySQL das nicht zulässt Zieltabelle einer UPDATE-Anweisung (Giveaways), die in einer Unterabfrage innerhalb der WHERE-Klausel verwendet werden soll.
Anpassung der Lösung aus dem Referenzartikel
Um dieses Problem zu beheben, Passen Sie die in dem Artikel, auf den Sie verwiesen haben, bereitgestellte Lösung an, indem Sie eine verschachtelte Unterabfrage verwenden. Hier ist die aktualisierte Abfrage:
UPDATE giveaways SET winner='1' WHERE Id = (SELECT Id FROM (SELECT MAX(Id) AS id FROM giveaways) AS t)
Diese Abfrage wählt effektiv den maximalen ID-Wert aus der Giveaways-Tabelle als Unterabfrage (t) aus und verwendet diesen Wert dann, um die Gewinnerspalte in der äußeren Abfrage zu aktualisieren.
Durch die Verschachtelung der Unterabfrage vermeiden Sie die Angabe der Zieltabelle (Giveaways) in der FROM-Klausel der Unterabfrage und lösen so das Problem auf Fehler.
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL beim Aktualisieren einer Tabelle mithilfe einer Unterabfrage den Fehler 1093 aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!