Nếu bạn gặp lỗi “ ERROR 1054 (42S22):Cột không xác định‘ colname ’trong‘ mệnh đề đặt hàng ’ ”Trong MariaDB, có thể bạn đang cố gắng tham chiếu đến một cột bí danh theo tên cột của nó.
Đây là một lỗi phổ biến khi chạy các truy vấn nối hai hoặc nhiều bảng. Nó cũng có thể xảy ra khi sử dụng các toán tử như UNION
, INTERSECT
và EXCEPT
.
Nói chung, nếu một cột có bí danh, thì bạn phải sử dụng bí danh đó trong bất kỳ ORDER BY
nào mệnh đề tham chiếu đến cột đó.
Để sửa lỗi, chỉ cần tham chiếu cột theo bí danh của nó.
Ngoài ra, bạn có thể xóa hoàn toàn bí danh và tham chiếu trực tiếp đến tên cột.
Ví dụ về Lỗi
Dưới đây là một ví dụ về mã tạo ra lỗi:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Kết quả:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'
Ở đây tôi không sử dụng bí danh trong ORDER BY
mệnh đề dẫn đến lỗi.
Giải pháp 1
Một cách để khắc phục sự cố này là sử dụng bí danh trong ORDER BY
mệnh đề:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Kết quả:
+-------+ | t | +-------+ | Ben | | Cathy | +-------+
Trong trường hợp này, bí danh trở thành tiêu đề cột trong kết quả.
Giải pháp 2
Một cách khác để làm điều đó là xóa hoàn toàn bí danh:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Kết quả:
+-------------+ | TeacherName | +-------------+ | Ben | | Cathy | +-------------+
Lúc này, tên cột trở thành tiêu đề cột.