Soit il suffit d'utiliser le nom de colonne d'origine - cela devrait fonctionner aussi longtemps que la table MANAGERS
n'a pas une colonne ID
:
SELECT NAME, ID AS M_ID
FROM EMPLOYEES
WHERE EXISTS (
SELECT 1
FROM MANAGERS
WHERE MANAGERID = ID
)
Ou mieux encore, utilisez un alias pour les tables:
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
)
Les alias de colonne ne peuvent être utilisés que dans les clauses ORDER BY
, GROUP BY
et HAVING
. SQL standard ne vous permet pas de faire référence à un alias de colonne dans une clause WHERE
. Cette restriction est imposée parce que lorsque le code WHERE
est exécuté, la valeur de la colonne peut ne pas encore être déterminée. Par ailleurs - l'utilisation d'un sous-ensemble pour le problème donné pourrait ne pas être la meilleure solution. Même si dans ce cas simple, je suppose que l'optimiseur de requêtes MySQL peut trouver un moyen simple dans le plan d'exécution.