PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara menjatuhkan satu kunci gabung saat menggabungkan dua tabel

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 ...

Detail dalam manual.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spark SQL 2.0:NullPointerException dengan kueri PostgreSQL yang valid

  2. Adakah alasan untuk tidak menggunakan pencarian teks lengkap bawaan PostgreSQL di Heroku?

  3. Filter menurut rentang tanggal (bulan dan hari yang sama) sepanjang tahun

  4. Mengapa database Postgres saya berfungsi untuk sementara waktu dan kemudian tidak dapat memulai server setelah dimulai ulang?

  5. Beberapa catatan yang tidak diinginkan di Grup demi klausa di Postgress