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.