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.