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

mySQL में गतिशील रूप से कॉलम नामों का चयन कैसे करें

इसे SQLFiddle आज़माएं :

CREATE TABLE atable (
  prefix1 VARCHAR(10)
  ,prefix2 VARCHAR(10)
  ,notprefix3 INT
  ,notprefix4 INT
);

INSERT INTO atable VALUES ('qwer qwer', 'qwerqwer', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'asdfaasd', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'qrt vbb', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'sdfg sdg', 1, 1);

SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME), ' FROM atable;')
INTO @query
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'atable'
  AND c.COLUMN_NAME LIKE 'prefix%'
ORDER BY c.ORDINAL_POSITION;

PREPARE stmt FROM @query;

EXECUTE stmt;

कुछ मुद्दे:

आप शायद अपने परिणाम सेट पर किसी प्रकार का ORDER BY चाहते हैं।

जुड़ने और चीजों के मामले में आप क्या कर सकते हैं इसकी एक सीमा है।

आप सत्यापन को उस रनटाइम पर ले जाते हैं जहां परीक्षण द्वारा इसके छूटने की अधिक संभावना होती है।

आप स्कीमा परिवर्तनों को आसानी से संभालने में सक्षम होने की उम्मीद कर रहे हैं। यह तकनीक केवल एक निश्चित प्रकार के स्कीमा परिवर्तनों को संभालेगी जिन्हें आप देख सकते हैं, और अन्य आपको शायद इस कोड को वैसे भी बदलना होगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या ORDER BY DISTINCT से पहले या बाद में लागू होता है?

  2. mysql फुलटेक्स्ट स्टॉपवर्ड सूचियों को कहाँ संपादित करें?

  3. जेपीए:कई से कई संबंध - JsonMappingException:अनंत पुनरावृत्ति

  4. Oracle में MySQL अस्थायी तालिका के लिए वैकल्पिक

  5. मैसकल को विशिष्ट तालिका की अंतिम आईडी मिलती है