PostgreSQL के DISTINCT ON
. के साथ सरल, छोटा, तेज़ :
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
इस निकट से संबंधित उत्तर
में विवरण, स्पष्टीकरण, बेंचमार्क और लिंक .
मैं एक LEFT JOIN
का उपयोग करता हूं , ताकि table_a
. से पंक्तियां table_b
. में बिना किसी मिलान पंक्ति के गिराए नहीं गए हैं।
साइड नोट:
जबकि PostgreSQL में अनुमति दी जा रही है, date
. का उपयोग करना नासमझी है स्तंभ नाम के रूप में। यह एक आरक्षित शब्द
है प्रत्येक SQL मानक में और PsotgreSQL में एक प्रकार का नाम।
यह एक आईडी कॉलम id
. का नाम देने के लिए एक विरोधी पैटर्न भी है . वर्णनात्मक नहीं और सहायक नहीं। एक (कई में से) संभावित नामकरण परंपरा को उस तालिका के नाम पर रखना होगा जहां यह प्राथमिक कुंजी है:table_a_id
. इसे संदर्भित करने वाली विदेशी कुंजियों के लिए समान नाम (यदि कोई अन्य प्राकृतिक नाम पूर्वता नहीं लेता है)।