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