Fehler: Tabelle zweimal in MySQL-Abfrage angegeben
In MySQL, wenn versucht wird, eine Tabelle zu aktualisieren und sie gleichzeitig als Datenquelle darin zu verwenden Bei derselben Abfrage kann der Fehler „Tabelle ‚m1‘ wird zweimal angegeben, sowohl als Ziel für ‚UPDATE‘ als auch als separate Quelle für Daten“ auftreten. Dieser Fehler ist auf die Einschränkungen von MySQL bei der Verarbeitung solcher Abfragen zurückzuführen.
Um dieses Problem zu beheben, erfordert MySQL, dass Benutzer nicht den Alias der Tabelle direkt in der Unterabfrage verwenden, sondern aus einer abgeleiteten Tabelle auswählen. Dazu gehört das Erstellen einer temporären Tabelle basierend auf der Originaltabelle und das Verweisen auf die abgeleitete Tabelle in der Unterabfrage.
Überarbeitete Abfrage:
Hier ist eine überarbeitete Version der Abfrage verwendet eine abgeleitete Tabelle, um den Fehler zu umgehen:
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 Auswahl aus der abgeleiteten Tabelle (gekennzeichnet durch „(SELECT * FROM manager) AS m2") vermeidet die Abfrage die Mehrdeutigkeit, die den vorherigen Fehler verursacht hat. Die abgeleitete Tabelle fungiert als unabhängige Datenquelle und ermöglicht es der Abfrage, auf die Tabelle sowohl als Ziel für die Aktualisierung als auch als Datenquelle für die Unterabfrage zu verweisen.
Das obige ist der detaillierte Inhalt vonWie behebt man den MySQL-Fehler „Tabelle zweimal angegeben' beim Aktualisieren und Abfragen derselben Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!