Postgres tidak memberi Anda kesalahan untuk nama kolom keluaran duplikat, tetapi beberapa klien melakukannya. (Nama duplikat juga tidak terlalu berguna.)
Apa pun itu, gunakan USING
klausa sebagai kondisi join untuk melipat dua kolom join menjadi satu:
SELECT *
FROM tbl_a a
LEFT JOIN tbl_b b USING (id);
Saat Anda bergabung dengan tabel yang sama (self-join) akan ada lebih banyak nama kolom duplikat. Permintaan akan hampir tidak masuk akal untuk memulai. Ini mulai masuk akal untuk berbeda tabel. Seperti yang Anda nyatakan dalam pertanyaan Anda untuk memulai dengan:I have two tables ...
Untuk menghindari semua nama kolom duplikat, Anda harus mencantumkannya di SELECT
klausa secara eksplisit - mungkin menangani alias kolom untuk mendapatkan kedua instance dengan nama yang berbeda.
Atau Anda dapat menggunakan NATURAL
bergabung - jika itu sesuai dengan kasus penggunaan Anda yang tidak dapat dijelaskan:
SELECT *
FROM tbl_a a
NATURAL LEFT JOIN tbl_b b;
Ini bergabung pada semua kolom yang memiliki nama yang sama dan melipatnya secara otomatis - persis sama dengan mencantumkan semua nama kolom umum dalam USING
ayat. Anda perlu mengetahui aturan untuk kemungkinan nilai NULL ...