PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Khắc phục ‘LỖI:cột“ colname ”không tồn tại’ trong PostgreSQL khi sử dụng UNION, EXCEPT hoặc INTERSECT

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 , INTERSECTEXCEPT , 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;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nhầm lẫn cổng postgresql 5433 hay 5432?

  2. LỖI PostgreSQL:hàm to_tsvector (ký tự thay đổi, không xác định) không tồn tại

  3. Các phương pháp hay nhất về sao chép PostgreSQL - Phần 2

  4. Làm thế nào để chuyển đổi cơ sở dữ liệu trong postgres?

  5. PostgreSQL:Làm thế nào để chuyển đổi từ Unix epoch sang date?