Jeśli otrzymujesz błąd „BŁĄD 1054 (42S22):Nieznana kolumna „nazwa_kolumny” w „klauzula zamówienia” ” w MariaDB może się zdarzyć, że próbujesz odwołać się do kolumny z aliasem według jej nazwy.
Jest to częsty błąd podczas uruchamiania zapytań łączących co najmniej dwie tabele. Może się to również zdarzyć podczas używania operatorów, takich jak UNION
, INTERSECT
i EXCEPT
.
Ogólnie, jeśli kolumna ma alias, musisz użyć tego aliasu w dowolnym ORDER BY
klauzula odwołująca się do tej kolumny.
Aby naprawić błąd, po prostu odwołaj się do kolumny za pomocą jej aliasu.
Alternatywnie możesz całkowicie usunąć alias i odnieść się bezpośrednio do nazwy kolumny.
Przykład błędu
Oto przykład kodu, który generuje błąd:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Wynik:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'
Tutaj nie użyłem aliasu w ORDER BY
klauzula, która spowodowała błąd.
Rozwiązanie 1
Jednym ze sposobów rozwiązania tego problemu jest użycie aliasu w ORDER BY
klauzula:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Wynik:
+-------+ | t | +-------+ | Ben | | Cathy | +-------+
W takim przypadku alias staje się nagłówkiem kolumny w wyniku.
Rozwiązanie 2
Innym sposobem na to jest całkowite usunięcie aliasu:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Wynik:
+-------------+ | TeacherName | +-------------+ | Ben | | Cathy | +-------------+
Tym razem nazwa kolumny staje się nagłówkiem kolumny.