Verwenden Sie entweder nur den ursprünglichen Spaltennamen - dies sollte funktionieren, solange die MANAGERS
Tabelle keine ID
Spalt hat:
SELECT NAME, ID AS M_ID
FROM EMPLOYEES
WHERE EXISTS (
SELECT 1
FROM MANAGERS
WHERE MANAGERID = ID
)
Oder noch besser, einen Aliasnamen für die Tabellen verwenden:
SELECT e.NAME, e.ID AS M_ID
FROM EMPLOYEES AS e
WHERE EXISTS (
SELECT 1
FROM MANAGERS AS m
WHERE m.MANAGERID = e.ID
)
Spaltenaliasnamen können nur in den Abschnitten ORDER BY
, GROUP BY
und HAVING
verwendet werden. Mit Standard-SQL können Sie nicht auf einen Spaltenalias in einer WHERE
-Klausel verweisen. Diese Einschränkung wird auferlegt, weil der Spaltenwert möglicherweise nicht bestimmt wird, wenn der Code WHERE
ausgeführt wird.
Übrigens ist die Verwendung eines Subselect für das gegebene Problem möglicherweise nicht die beste Lösung. Auch wenn ich in diesem einfachen Fall davon ausgehen würde, dass der MySQL-Abfrageoptimierer einen einfachen Weg im Ausführungsplan finden kann.