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

Bergabunglah satu ke banyak dan ambil hasil tunggal

Lebih sederhana, lebih pendek, lebih cepat dengan DISTINCT ON PostgreSQL :

SELECT DISTINCT ON (a.id)
       a.id, a.name, a.date, b.code1, b.code2
FROM   table_a a
LEFT   JOIN table_b b USING (id)
ORDER  BY a.id, b.sort

Detail, penjelasan, tolok ukur, dan tautan di jawaban yang terkait erat ini .
Saya menggunakan LEFT JOIN , sehingga baris dari table_a tanpa baris yang cocok di table_b tidak dijatuhkan.

Catatan samping:

Meskipun diizinkan di PostgreSQL, tidak bijaksana menggunakan date sebagai nama kolom. Ini adalah kata yang dicadangkan di setiap standar SQL dan nama tipe di PsotgreSQL.

Ini juga merupakan anti-pola untuk memberi nama kolom ID id . Tidak deskriptif dan tidak membantu. Satu (dari banyak) konvensi penamaan yang mungkin adalah menamainya setelah tabel di mana itu adalah kunci utama:table_a_id . Nama yang sama untuk kunci asing yang merujuknya (jika tidak ada nama asli lain yang diutamakan).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonversi Kasus String di PostgreSQL

  2. Hitung jumlah pembaruan

  3. kueri sql dinamis di postgres

  4. Mendapatkan hampir dua kali lipat panjangnya saat membaca byte[] dari postgres dengan jpa

  5. Penggantian substring PostgreSQL UPDATE