पोस्टग्रेज नहीं होगा डुप्लिकेट आउटपुट कॉलम नामों के लिए आपको एक त्रुटि देता है, लेकिन कुछ क्लाइंट करते हैं। (डुप्लिकेट नाम भी बहुत उपयोगी नहीं हैं।)
किसी भी तरह से, 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 मानों के लिए नियमों के बारे में पता होना चाहिए ...