MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

„ERROR 1054 (42S22):Unbekannte Spalte ‚Spaltenname‘ in ‚Bestellklausel‘“ in MariaDB behoben

Wenn Sie den Fehler „ERROR 1054 (42S22):Unbekannte Spalte ‚Spaltenname‘ in ‚Auftragsklausel‘“ erhalten “ in MariaDB, kann es sein, dass Sie versuchen, eine Alias-Spalte anhand ihres Spaltennamens zu referenzieren.

Dies ist ein häufiger Fehler beim Ausführen von Abfragen, die zwei oder mehr Tabellen verknüpfen. Es kann auch passieren, wenn Operatoren wie UNION verwendet werden , INTERSECT , und EXCEPT .

Wenn eine Spalte einen Alias ​​hat, müssen Sie im Allgemeinen diesen Alias ​​in jedem ORDER BY verwenden Klausel, die auf diese Spalte verweist.

Um den Fehler zu beheben, verweisen Sie einfach auf die Spalte mit ihrem Alias.

Alternativ könnten Sie den Alias ​​ganz entfernen und direkt auf den Spaltennamen verweisen.

Fehlerbeispiel

Hier ist ein Codebeispiel, das den Fehler erzeugt:

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

Ergebnis:

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

Hier habe ich den Alias ​​im ORDER BY nicht verwendet Klausel, die zu dem Fehler geführt hat.

Lösung 1

Eine Möglichkeit, dieses Problem zu beheben, besteht darin, den Alias ​​in ORDER BY zu verwenden Klausel:

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

Ergebnis:

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

In diesem Fall wird der Alias ​​im Ergebnis zur Spaltenüberschrift.

Lösung 2

Eine andere Möglichkeit besteht darin, den Alias ​​vollständig zu entfernen:

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

Ergebnis:

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

Diesmal wird der Spaltenname zur Spaltenüberschrift.