Mysql
 sql >> Base de données >  >> RDS >> Mysql

Correction de "ERREUR 1054 (42S22) :colonne inconnue '...' dans la 'clause de commande' lors de l'utilisation de UNION dans MySQL

Si vous obtenez l'erreur "1054 (42S22):Colonne inconnue '...' dans 'clause de commande'" lors de l'utilisation de UNION clause dans MySQL, cela peut être dû au fait que vous essayez de référencer une colonne aliasée par son nom de colonne.

Lors de l'utilisation de l'UNION clause dans MySQL, si une colonne a un alias, alors vous devez utiliser cet alias dans n'importe quel ORDER BY clause qui fait référence à cette colonne.

Donc, pour corriger l'erreur, assurez-vous de référencer la colonne par son alias. Vous pouvez également supprimer l'alias et référencer directement le nom de la colonne.

Exemple d'erreur

Voici un exemple de code qui génère l'erreur :

(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Résultat :

ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'

Ici, j'ai essayé de classer les résultats par le TeacherName colonne, mais cette colonne a un alias. Le fait que je n'ai pas utilisé l'alias dans le ORDER BY clause était suffisante pour produire l'erreur.

Solution 1

Une façon de résoudre ce problème consiste à utiliser l'alias dans le ORDER BY clause :

(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Résultat :

+--------+
| t      |
+--------+
| Ben    |
| Bill   |
| Cathy  |
| Ein    |
| Faye   |
| Jet    |
| Spike  |
| Warren |
+--------+

Cela a résolu le problème.

Solution 2

Une autre façon de procéder consiste à supprimer complètement l'alias :

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Résultat :

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Bill        |
| Cathy       |
| Ein         |
| Faye        |
| Jet         |
| Spike       |
| Warren      |
+-------------+