Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL beim Aktualisieren einer Tabelle mithilfe einer Unterabfrage den Fehler 1093 aus?

Warum gibt MySQL beim Aktualisieren einer Tabelle mithilfe einer Unterabfrage den Fehler 1093 aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-22 00:11:23522Durchsuche

Why Does MySQL Throw Error 1093 When Updating a Table Using a Subquery?

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!

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