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

शामिल होने में डुप्लिकेट फ़ील्ड को छोड़कर

SQL में कोई स्तंभ बहिष्करण सिंटैक्स नहीं है, केवल स्तंभ समावेशन सिंटैक्स है (सभी स्तंभों के लिए * ऑपरेटर के माध्यम से, या स्तंभ नामों को स्पष्ट रूप से सूचीबद्ध करना)।

केवल अपने इच्छित स्तंभों की सूची बनाएं

हालाँकि, आप SQL स्टेटमेंट को इसके सैकड़ों कॉलम नामों के साथ जेनरेट कर सकते हैं, कुछ डुप्लिकेट कॉलम जो आप नहीं चाहते हैं, स्कीमा टेबल और अपने डेटाबेस के कुछ बिल्ट-इन फ़ंक्शंस का उपयोग करके।

SELECT
    'SELECT sampledata.c1, sampledata.c2, ' || ARRAY_TO_STRING(ARRAY(
        SELECT 'demographics' || '.' || column_name
        FROM information_schema.columns
        WHERE table_name = 'demographics' 
        AND column_name NOT IN ('zip')
        UNION ALL
        SELECT 'community' || '.' || column_name
        FROM information_schema.columns
        WHERE table_name = 'community' 
        AND column_name NOT IN ('fips')
    ), ',') || ' FROM sampledata JOIN demographics USING (zip) JOIN community USING (fips)'
AS statement

यह केवल स्टेटमेंट को प्रिंट करता है, इसे निष्पादित नहीं करता है। फिर आप बस परिणाम को कॉपी करें और उसे चलाएं।

यदि आप एक ही बार में कथन को गतिशील रूप से उत्पन्न और चलाना चाहते हैं, तो आप PostgreSQL दस्तावेज़ीकरण

टेबल नाम के साथ कॉलम नाम तैयार करें

वैकल्पिक रूप से, यह सभी स्तंभों की एक चुनिंदा सूची बनाता है, जिसमें डुप्लिकेट डेटा वाले स्तंभ भी शामिल हैं, लेकिन फिर प्रत्येक स्तंभ के तालिका नाम को भी शामिल करने के लिए उन्हें उपनाम दिया जाता है।

SELECT
    'SELECT ' || ARRAY_TO_STRING(ARRAY(
        SELECT table_name || '.' || column_name || ' AS ' || table_name || '_' || column_name
        FROM information_schema.columns
        WHERE table_name in ('sampledata', 'demographics', 'community')
    ), ',') || ' FROM sampledata JOIN demographics USING (zip) JOIN community USING (fips)'
AS statement

दोबारा, यह केवल कथन उत्पन्न करता है। यदि आप कथन को गतिशील रूप से उत्पन्न और चलाना चाहते हैं, तो आपको अपने डेटाबेस के लिए गतिशील SQL निष्पादन पर ब्रश करना होगा, अन्यथा बस परिणाम को कॉपी और चलाएँ।

यदि आप वास्तव में कॉलम एलियासेस में डॉट सेपरेटर चाहते हैं, तो आपको डबल-उद्धृत उपनामों का उपयोग करना होगा जैसे SELECT table_name || '.' || column_name || ' AS "' || table_name || '.' || column_name || '"' . हालांकि, दोहरे-उद्धृत उपनाम अतिरिक्त जटिलताएं पैदा कर सकते हैं (केस-संवेदनशीलता, आदि); इसलिए, मैंने उपनाम के भीतर कॉलम नाम से तालिका नाम को अलग करने के बजाय अंडरस्कोर वर्ण का उपयोग किया, और उपनामों को नियमित कॉलम नामों की तरह अन्य-वार माना जा सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्लाउड में पोस्टग्रेएसक्यूएल क्लस्टर्स के नियर-ज़ीरो डाउनटाइम ऑटोमेटेड अपग्रेड्स (भाग I)

  2. SQL डेवलपर समस्या के साथ PostgreSQL

  3. प्रश्न में प्रश्न चिह्न ऑपरेटर

  4. django प्रोजेक्ट के साथ PostgreSQL की स्थापना

  5. मैं स्प्रिंगबूट और हाइबरनेट का उपयोग करके जेडीबीसी पैरामीटर कैसे पास करूं?