sql >> Databasteknik >  >> RDS >> MariaDB

Fixa "ERROR 1054 (42S22):Okänd kolumn "colname" i "order clause" i MariaDB

Om du får felmeddelandet "ERROR 1054 (42S22):Okänd kolumn "colname" i "order clause" ” i MariaDB kan det vara så att du försöker referera till en aliasad kolumn med dess kolumnnamn.

Detta är ett vanligt fel när du kör frågor som sammanfogar två eller flera tabeller. Det kan också hända när du använder operatorer som UNION , INTERSECT och EXCEPT .

I allmänhet, om en kolumn har ett alias, måste du använda det aliaset i någon ORDER BY klausul som refererar till den kolumnen.

För att åtgärda felet hänvisar du bara till kolumnen med dess alias.

Alternativt kan du ta bort aliaset helt och hållet och referera till kolumnnamnet direkt.

Exempel på fel

Här är ett exempel på kod som ger felet:

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

Resultat:

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

Här använde jag inte aliaset i ORDER BY klausul som resulterade i felet.

Lösning 1

Ett sätt att lösa det här problemet är att använda aliaset i ORDER BY klausul:

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

Resultat:

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

I det här fallet blir aliaset kolumnrubriken i resultatet.

Lösning 2

Ett annat sätt att göra det är att ta bort aliaset helt och hållet:

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

Resultat:

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

Den här gången blir kolumnnamnet kolumnrubriken.


  1. Hur man krypterar data i Oracle med PL SQL

  2. Hur man får en beräknad kolumns definition i SQL Server med T-SQL

  3. Hur man tar bort dubbletter i MySQL-tabellen

  4. Hur man hittar ASCII-koden för en given karaktär i MySQL