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