sql >> Database teknologi >  >> RDS >> MariaDB

Ret "FEJL 1054 (42S22):Ukendt kolonne 'colname' i 'order clause' i MariaDB

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.


  1. Sådan bruger du flere databaser dynamisk til en model i CakePHP

  2. Sådan gendanner du en database fra C#

  3. Funktionen MySQL LEAST() – Find det mindste argument i en liste over argumenter

  4. Brug af varchar(MAX) vs TEXT på SQL Server