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

दो तालिकाओं में शामिल होने पर एक जॉइन कुंजी कैसे छोड़ें

पोस्टग्रेज नहीं होगा डुप्लिकेट आउटपुट कॉलम नामों के लिए आपको एक त्रुटि देता है, लेकिन कुछ क्लाइंट करते हैं। (डुप्लिकेट नाम भी बहुत उपयोगी नहीं हैं।)

किसी भी तरह से, USING . का उपयोग करें दो जॉइन कॉलम को एक में फोल्ड करने के लिए जॉइन कंडीशन के रूप में क्लॉज:

SELECT *
FROM  tbl_a  a
LEFT  JOIN tbl_b b USING (id);

जब आप एक ही टेबल में शामिल होते हैं (सेल्फ-जॉइन) तो और अधिक डुप्लिकेट कॉलम नाम होंगे। इस सवाल का शायद ही कोई मतलब होगा जिसके साथ शुरू किया जा सकता है। यह भिन्न . के लिए समझ में आने लगता है टेबल। जैसा कि आपने शुरू में अपने प्रश्न में कहा था:I have two tables ...

सभी डुप्लिकेट कॉलम नामों से बचने के लिए, आपको उन्हें SELECT . में सूचीबद्ध करना होगा खंड स्पष्ट रूप से - संभवतः अलग-अलग नामों के साथ दोनों उदाहरण प्राप्त करने के लिए कॉलम उपनामों से निपटना।

या आप NATURAL का उपयोग कर सकते हैं शामिल हों - यदि यह आपके अस्पष्ट उपयोग के मामले में फिट बैठता है:

SELECT *
FROM  tbl_a  a
NATURAL LEFT JOIN tbl_b b;

यह उन सभी स्तंभों में शामिल हो जाता है जो समान नाम साझा करते हैं और उन्हें स्वचालित रूप से फ़ोल्ड कर देते हैं - ठीक उसी तरह जैसे USING में सभी सामान्य स्तंभ नामों को सूचीबद्ध करना खंड। आपको संभावित NULL मानों के लिए नियमों के बारे में पता होना चाहिए ...

मैनुअल में विवरण।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में संचयी योग की गणना

  2. जावा तिथियों के आधार पर पोस्टग्रेज में टाइमस्टैम्प सहेजा जा रहा है

  3. Sqlalchemy:द्वितीयक संबंध अद्यतन

  4. psycopg2 - बिना चाबी वाला कनेक्शन

  5. JDBC का उपयोग करते समय Postgresql में Oracle के REF CURSOR के बराबर क्या है?