ज़रुरी नहीं। आप *
का उपयोग कर सकते हैं कॉलम वाइल्डकार्ड
सभी स्तंभों का चयन करने के लिए। यदि आप एक से अधिक तालिकाओं में शामिल हो रहे हैं, तो आप *
. उपसर्ग करके विशिष्ट तालिका से सभी स्तंभों का चयन कर सकते हैं तालिका नाम या उपनाम के साथ:
SELECT a.id, a.title, b.*
FROM articles AS a
JOIN blurbs AS b ON a.id = b.article
हालांकि, आपको *
. का उपयोग नहीं करना चाहिए जब तक आप एक डीबी प्रशासन कार्यक्रम नहीं लिख रहे हैं।
वैकल्पिक रूप से, आप स्तंभ नाम प्राप्त करने के लिए तालिका मेटाडेटा लाकर SQL या किसी अन्य भाषा में एक कथन बना सकते हैं। केवल MySQL का उपयोग करके, आप COLUMNS<को क्वेरी कर सकते हैं /कोड>
तालिका में INFORMATION_SCHEMA
कॉलम नाम प्राप्त करने और GROUP_CONCAT
कथन के लिए कॉलम सूची बनाने के लिए।
SELECT CONCAT(
'SELECT ',
GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
' FROM ', :db, '.', :table,
' WHERE ...'
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
":db", ":table" और "..." को उपयुक्त मानों से बदलें। आप इसे तैयार स्टेटमेंट में भी बदल सकते हैं ताकि आप इसे किसी भी टेबल के लिए इस्तेमाल कर सकें। वहां से, PREPARE
और EXECUTE
निर्मित कथन।
यदि आप प्रोग्रामिंग के लिए SQL तक सीमित नहीं हैं, तो यह कम गन्दा होना चाहिए। आपकी पसंद की भाषा के लिए डीबी ड्राइवर मेटाडेटा प्राप्त करने के तरीकों की पेशकश करता है। वास्तविक कार्यान्वयन शुद्ध एसक्यूएल दृष्टिकोण के समान होगा (स्तंभ नाम प्राप्त करें, बयान इकट्ठा करें, तैयार करें, निष्पादित करें), लेकिन इतना बदसूरत नहीं होना चाहिए, क्योंकि आप घोषणात्मक, भाषा के बजाय एक एल्गोरिदमिक का उपयोग करेंगे।
मुझे इस स्थिति को देखने में बहुत दिलचस्पी होगी कि वास्तव में इसकी आवश्यकता है..