Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL beim Aktualisieren einer Tabelle mithilfe einer Unterabfrage den Fehler „Table Specified Twice' aus?
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!