MySQL-Fehler: Tabelle zweimal angegeben
Beim Versuch, eine Tabelle zu aktualisieren und sie gleichzeitig als Datenquelle zu verwenden, kann MySQL einen Fehler ausgeben Zeigt an, dass die Tabelle zweimal angegeben ist. Dies tritt normalerweise auf, wenn Unterabfragen mit Tabellen-Aliasing verwendet werden.
Betrachten Sie beispielsweise die folgende Abfrage:
UPDATE manager AS m1 SET m1.status = 'Y' WHERE m1.branch_id IN ( SELECT m2.branch_id FROM manager AS m2 WHERE (m2.branch_id, m2.year) IN ( SELECT DISTINCT branch_id, year FROM branch_master WHERE type = 'finance' ) );
Diese Abfrage versucht, die Managertabelle basierend auf einer Unterabfrage zu aktualisieren, die prüft, ob bestimmte Felder vorhanden sind in Manager-Match-Werten aus der Tabelle branch_master, wobei der Typ „Finanzen“ ist. Allerdings beanstandet MySQL, dass die Manager-Tabelle sowohl als Ziel (in der UPDATE-Klausel) als auch als Datenquelle (in der Unterabfrage) verwendet wird.
Um dieses Problem zu beheben und zu verhindern, dass die „Tabelle ist Wenn der Fehler „zweimal angegeben“ auftritt, können wir eine abgeleitete Tabelle für die Unterabfrage verwenden. Dazu gehört das Erstellen einer temporären Tabelle basierend auf der Originaltabelle und die anschließende Auswahl aus dieser abgeleiteten Tabelle:
FROM (SELECT * FROM manager) AS m2
Indem wir die ursprüngliche Managertabelle in Klammern setzen und das Ergebnis mit dem Alias m2 versehen, erstellen wir eine neue abgeleitete Tabelle. Dadurch können wir Daten aus der Managertabelle auswählen, ohne den Managernamen zweimal explizit anzugeben.
Aktualisierte Abfrage:
UPDATE manager SET status = 'Y' WHERE branch_id IN ( SELECT branch_id FROM (SELECT * FROM manager) AS m2 WHERE (m2.branch_id, m2.year) IN ( SELECT branch_id, year FROM branch_master WHERE type = 'finance' ) );
Diese aktualisierte Abfrage verwendet korrekt eine abgeleitete Tabelle für die Unterabfrage und löst das auf Der Fehler „Tabelle wurde zweimal angegeben“ führt dazu, dass die Abfrage erfolgreich ausgeführt werden kann.
Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Table Specified Twice“ in MySQL bei der Verwendung von Unterabfragen behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!