Zweimal angegebene Tabelle: Aktualisierungskonflikt in MySQL lösen
Beim Versuch, eine Tabelle zu aktualisieren, die sowohl als Ziel für die Aktualisierung als auch als separate Tabelle angezeigt wird Wenn Sie eine Datenquelle verwenden, löst MySQL möglicherweise den Fehler aus: „Tabelle ‚table_name‘ wird zweimal angegeben, sowohl als Ziel für ‚UPDATE‘ als auch als separate Quelle für Daten.“ Dieses Problem tritt auf, wenn Sie in Ihrer Abfrage mehrmals auf dieselbe Tabelle verweisen.
Diese Fehlermeldung weist insbesondere darauf hin, dass die Managertabelle sowohl als Zieltabelle für den UPDATE-Vorgang als auch als Datenquelle für die Auswahl verwendet wird Daten aus der Tabelle branch_master. Dieser doppelte Verweis kann MySQL verwirren.
Lösung
Die Lösung besteht darin, die Tabelle in Ihrer Datenquelle in eine abgeleitete Tabelle zu isolieren, bei der es sich um eine temporäre Tabelle handelt, die auf der erstellt wurde fliegen, um die Daten aus der Originaltabelle zu speichern. Auf diese Weise können Sie Unklarheiten in Ihrer Abfrage vermeiden.
Ersetzen Sie die folgende Zeile in Ihrer Abfrage:
FROM manager AS m2
durch:
FROM (select * from manager) AS m2
Dadurch wird eine erstellt abgeleitete Tabelle namens m2, die alle Daten aus der ursprünglichen Manager-Tabelle enthält.
Aktualisierte Abfrage
Hier ist die aktualisierte Abfrage, die den Tabellenkonfliktfehler behebt:
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 können Sie sicherstellen, dass die Manager-Tabelle nur einmal in Ihrer Abfrage referenziert wird, wodurch verhindert wird, dass MySQL auf den Fehler „Tabelle zweimal angegeben“ stößt.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Table Specified Twice“ in MySQL-UPDATE-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!