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 einen 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 geänderte 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3