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

Cách bỏ một khóa tham gia khi tham gia hai bảng

Postgres sẽ không cung cấp cho bạn một lỗi cho các tên cột đầu ra trùng lặp, nhưng một số ứng dụng khách thì có. (Tên trùng lặp cũng không hữu ích lắm.)

Dù bằng cách nào, hãy sử dụng USING mệnh đề như điều kiện nối để gấp hai cột nối thành một:

SELECT *
FROM  tbl_a  a
LEFT  JOIN tbl_b b USING (id);

Trong khi bạn tham gia cùng một bảng (tự tham gia) sẽ có nhiều tên cột trùng lặp hơn. Truy vấn sẽ hầu như không có ý nghĩa gì khi bắt đầu. Điều này bắt đầu có ý nghĩa đối với khác biệt những cái bàn. Giống như bạn đã nêu trong câu hỏi của mình để bắt đầu:I have two tables ...

Để tránh tất cả các tên cột trùng lặp, bạn phải liệt kê chúng trong SELECT mệnh đề một cách rõ ràng - có thể xử lý bí danh cột để lấy cả hai phiên bản có tên khác nhau.

Hoặc bạn có thể sử dụng NATURAL tham gia - nếu điều đó phù hợp với trường hợp sử dụng không giải thích được của bạn:

SELECT *
FROM  tbl_a  a
NATURAL LEFT JOIN tbl_b b;

Điều này kết hợp trên tất cả các cột có cùng tên và tự động gấp các cột đó lại - giống hệt như liệt kê tất cả các tên cột phổ biến trong USING mệnh đề. Bạn cần biết các quy tắc cho các giá trị NULL có thể có ...

Chi tiết trong sách hướng dẫn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật truy vấn quá chậm trên Postgres 9.1

  2. Heroku trên đường ray - DATABASE_URL không hợp lệ

  3. Làm thế nào để chuyển chuỗi với '' (dấu thời gian) trong câu lệnh đã chuẩn bị?

  4. Phân loại cây với một đường dẫn cụ thể?

  5. Đối chiếu kỳ lạ với postgresql