PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एक से अनेक में शामिल हों और एकल परिणाम प्राप्त करें

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 . इसे संदर्भित करने वाली विदेशी कुंजियों के लिए समान नाम (यदि कोई अन्य प्राकृतिक नाम पूर्वता नहीं लेता है)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मूल्यों के प्रति समूह कस्टम सीरियल / ऑटोइनक्रिकमेंट

  2. रूबी 'पीजी' मणि libpq.5.dylib (OSX पर) की गलत प्रति से जुड़ती है

  3. एसक्यूएल:पंक्तियों के बीच सबसे लंबी सामान्य स्ट्रिंग खोजें

  4. कॉलम में तालिका परिणाम मर्ज करें (धुरी/क्रॉसस्टैब?)

  5. Postgresql एकाधिक तालिकाओं से एकाधिक पंक्तियों को हटा दें