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.