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

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

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

Lỗi này xảy ra khi số cột được trả về bởi mỗi SELECT tuyên bố khác nhau.

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
UNION
SELECT StudentId, StudentName FROM Students;

Kết quả:

ERROR:  each UNION 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
UNION
SELECT StudentName FROM Students;

Hoặc chúng ta có thể thêm một cột khác vào SELECT đầu tiên tuyên bố:

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

Điều quan trọng cần lưu ý là bạn có thể nhận được các kết quả khác nhau tùy thuộc vào tùy chọn bạn chọn. Điều này là do UNION trả về các hàng riêng biệt theo mặc định. Khi chúng tôi thêm một cột khác, có khả năng một hàng trùng lặp trước đây trở thành một hàng duy nhất, tùy thuộc vào giá trị trong cột bổ sung.

Chúng tôi cũng có thể sử dụng UNION ALL , trả về các giá trị trùng lặp:

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

Điều này cũng có thể trả về các kết quả khác nhau cho các ví dụ khác.


  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àm thế nào để thực hiện một truy vấn chọn trong một khối DO?

  2. Gây ra bởi:java.lang.NoSuchMethodError:org.postgresql.core.BaseConnection.getEncoding () Lorg / postgresql / core / Encoding;

  3. Tạo mô-đun mới bằng PostgreSQL Tạo tiện ích mở rộng

  4. Tại sao postgres không tạo cơ sở dữ liệu?

  5. Cách ẩn trang trí tập hợp kết quả trong đầu ra Psql