Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL beim Aktualisieren einer Tabelle mithilfe einer Unterabfrage den Fehler „Table Specified Twice' aus?

Warum gibt MySQL beim Aktualisieren einer Tabelle mithilfe einer Unterabfrage den Fehler „Table Specified Twice' aus?

Susan Sarandon
Susan SarandonOriginal
2024-11-15 02:40:02504Durchsuche

Why Does MySQL Throw

MySQL-Fehler: Tabelle zweimal in UPDATE und Quelle angegeben

Beim Versuch, die Manager-Tabelle mithilfe der bereitgestellten SQL-Abfrage zu aktualisieren, stößt MySQL auf eine Fehler: „Tabelle ‚m1‘ wird zweimal angegeben, sowohl als Ziel für ‚UPDATE‘ als auch als separate Quelle für Daten.“ Dieser Fehler tritt auf, weil in der Unterabfrage zweimal auf den Tabellenmanager verwiesen wird.

Das Problem kann gelöst werden, indem die Unterabfrage so geändert wird, dass sie aus einer abgeleiteten Tabelle auswählt. Anstatt den Alias ​​m2 direkt zu verwenden, sollte die Abfrage mithilfe der SELECT-Anweisung eine temporäre Tabelle erstellen und dann aus dieser temporären Tabelle auswählen. Die folgende modifizierte Abfrage erreicht dies:

UPDATE manager
SET status = 'Y'
WHERE branch_id IN
(
  SELECT branch_id
  FROM (SELECT * FROM manager) AS m2
  WHERE (branch_id, year) IN
  (
    SELECT branch_id, year
    FROM branch_master
    WHERE type = 'finance'
  )
);

Durch die Verwendung einer abgeleiteten Tabelle kann MySQL ordnungsgemäß zwischen der in der UPDATE-Anweisung verwendeten Manager-Tabelle und der in der Unterabfrage referenzierten Manager-Tabelle unterscheiden. Dadurch wird die Verwirrung beseitigt, die zur Fehlermeldung geführt hat.

Das obige ist der detaillierte Inhalt vonWarum gibt MySQL beim Aktualisieren einer Tabelle mithilfe einer Unterabfrage den Fehler „Table Specified Twice' 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