Nếu bạn nhận được “ LỖI:cột“ tên màu ”không tồn tại’ ”Trong PostgreSQL khi sử dụng toán tử như UNION
, EXCEPT
hoặc INTERSECT
, 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ó.
Khi sử dụng các toán tử như UNION
, INTERSECT
và EXCEPT
, nếu một cột có bí danh, thì bạn sẽ cần 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ó.
Hoặc 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: column "teachername" does not exist LINE 4: ORDER BY TeacherName ASC;
Ở đâ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;
Giải pháp 2
Một tùy chọn khác là xóa hoàn toàn bí danh:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;