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

Khắc phục “LỖI:mỗi truy vấn INTERSECT phải có cùng số cột” trong PostgreSQL

Khi sử dụng INTERSECT của PostgreSQL , nếu bạn gặp lỗi có nội dung “ LỖI:mỗi truy vấn INTERSECT phải có cùng số cột “, Đó là do có sự không khớp về số lượng cột được trả về bởi các truy vấn ở hai bên của INTERSECT nhà điều hành.

Cách khắc phục điều này là đảm bảo rằng cả SELECT các câu lệnh trả về cùng một số cột.

Ví dụ về Lỗi

Dưới đây là một ví dụ về mã tạo ra lỗi:

SELECT TeacherName FROM Teachers
INTERSECT
SELECT StudentId, StudentName FROM Students;

Kết quả:

ERROR:  each INTERSECT query must have the same number of columns
LINE 3: SELECT StudentId, StudentName FROM Students;

Đây, SELECT đầu tiên câu lệnh trả về một cột (TeacherName ), nhưng SELECT thứ hai câu lệnh trả về hai cột (StudentIdStudentName ).

Giải pháp

Giải pháp là đảm bảo cả SELECT các câu lệnh trả về cùng một số cột

Sử dụng ví dụ trên, chúng tôi có thể xóa cột thừa khỏi SELECT thứ hai của chúng tôi tuyên bố:

SELECT TeacherName FROM Teachers
INTERSECT
SELECT StudentName FROM Students;

Kết quả:

 teachername 
-------------
 Bill
 Warren

Một tùy chọn khác là thêm cột có liên quan vào SELECT đầu tiên tuyên bố:

SELECT TeacherId, TeacherName FROM Teachers
INTERSECT
SELECT StudentId, StudentName FROM Students;

Kết quả:

 teacherid | teachername 
-----------+-------------
         6 | Bill

Như ví dụ này minh họa, các hàng khác nhau có thể được trả lại tùy thuộc vào tùy chọn bạn chọn.

Chúng tôi cũng có thể sử dụng INTERSECT ALL , bao gồm các giá trị trùng lặp:

SELECT TeacherId, TeacherName FROM Teachers
INTERSECT ALL
SELECT StudentId, StudentName FROM Students;

Kết quả:

 teacherid | teachername 
-----------+-------------
         6 | Bill

Điều này cũng có thể trả về các kết quả giống nhau hoặc khác nhau, tùy thuộc vào dữ liệu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi postgres khi chèn - LỖI:chuỗi byte không hợp lệ để mã hóa UTF8:0x00

  2. Lặp lại trên số nguyên [] trong PL / pgSQL

  3. Tạo trình kích hoạt để chèn bảng con trả về lỗi khó hiểu

  4. Tại sao Postgres không sử dụng chỉ mục?

  5. Toán tử PostgreSQL IN với hiệu suất kém truy vấn con