Hvis du får fejlen "FEJL 1054 (42S22):Ukendt kolonne 'colname' i 'order clause' ” i MariaDB kan det være, at du forsøger at henvise til en aliaseret kolonne ved dens kolonnenavn.
Dette er en almindelig fejl, når du kører forespørgsler, der forbinder to eller flere tabeller. Det kan også ske, når du bruger operatorer såsom UNION
, INTERSECT
og EXCEPT
.
Generelt, hvis en kolonne har et alias, skal du bruge dette alias i enhver ORDER BY
klausul, der refererer til den kolonne.
For at rette fejlen skal du blot henvise til kolonnen ved dens alias.
Alternativt kan du fjerne aliaset helt og referere til kolonnenavnet direkte.
Eksempel på fejl
Her er et eksempel på kode, der producerer fejlen:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Resultat:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'
Her brugte jeg ikke aliaset i ORDER BY
klausul, som resulterede i fejlen.
Løsning 1
En måde at løse dette problem på er at bruge aliaset i ORDER BY
klausul:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Resultat:
+-------+ | t | +-------+ | Ben | | Cathy | +-------+
I dette tilfælde bliver aliaset kolonneoverskriften i resultatet.
Løsning 2
En anden måde at gøre det på er at fjerne aliaset helt:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Resultat:
+-------------+ | TeacherName | +-------------+ | Ben | | Cathy | +-------------+
Denne gang bliver kolonnenavnet kolonneoverskriften.