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

Correction de "ERREUR 1054 (42S22) :colonne inconnue 'colname' dans 'order clause' dans MariaDB

Si vous obtenez l'erreur "ERROR 1054 (42S22):Colonne inconnue 'colname' dans 'order clause' " dans MariaDB, il se peut que vous essayiez de référencer une colonne aliasée par son nom de colonne.

Il s'agit d'une erreur courante lors de l'exécution de requêtes qui joignent deux ou plusieurs tables. Cela peut également se produire lors de l'utilisation d'opérateurs tels que UNION , INTERSECT , et EXCEPT .

Généralement, si une colonne a un alias, vous devez utiliser cet alias dans n'importe quel ORDER BY clause qui fait référence à cette colonne.

Pour corriger l'erreur, référencez simplement la colonne par son alias.

Vous pouvez également supprimer complètement 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)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Résultat :

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

Ici, je n'ai pas utilisé l'alias dans le ORDER BY clause qui a entraîné 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)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Résultat :

+-------+
| t     |
+-------+
| Ben   |
| Cathy |
+-------+

Dans ce cas, l'alias devient l'en-tête de colonne dans le résultat.

Solution 2

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

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

Résultat :

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Cathy       |
+-------------+

Cette fois, le nom de la colonne devient l'en-tête de la colonne.