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

MySQL सभी स्तंभों को जोड़ रहा है

किसी तालिका के सभी स्तंभों को संयोजित करने के लिए, आप * . का उपयोग नहीं कर सकते कीवर्ड, लेकिन आपको सभी स्तंभों को स्पष्ट रूप से सूचीबद्ध करने की आवश्यकता है:

SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable

या आप CONCAT_WS use का उपयोग करना चाह सकते हैं जो शून्य मानों को छोड़ देगा:

SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable

यदि आप सभी कॉलम नामों को मैन्युअल रूप से निर्दिष्ट नहीं करना चाहते हैं, तो आप एक डायनामिक क्वेरी का उपयोग कर सकते हैं। यह क्वेरी आपकी तालिका के सभी कॉलम नाम लौटा देगी:

SELECT `column_name` 
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable';

और GROUP_CONCAT का उपयोग करके आप सभी कॉलम नामों की सूची प्राप्त कर सकते हैं:

GROUP_CONCAT(CONCAT('`', column_name, '`'))

अल्पविराम से अलग किए गए प्रारूप में उद्धृत:

`col1`,`col2`,`col3`,`col4`,...

इसलिए अब हमारे पास अपनी क्वेरी को डायनामिक रूप से बनाने के लिए सभी तत्व हैं:

SELECT
  CONCAT(
    'SELECT CONCAT_WS(\'\',',
    GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name),
    ') AS all_columns FROM yourtable;')
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable'
INTO @sql;

यह क्वेरी @sql स्ट्रिंग को कुछ इस तरह सेट करेगी:

SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable

और यह कोड इसे निष्पादित करेगा:

PREPARE stmt FROM @sql;
EXECUTE stmt;

कृपया फिडल देखें यहां




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP isset () कई मापदंडों के साथ

  2. चेतावनी:mysql_query ():3 मान्य MySQL-लिंक संसाधन नहीं है

  3. MySQL VARCHAR आकार?

  4. क्या MySQL नेस्टेड परिणामों की वापसी सूची का चयन कर सकता है

  5. पीडीओ प्रारंभ करते समय - क्या मुझे यह करना चाहिए:वर्णसेट =यूटीएफ 8 या वर्णसेट =यूटीएफ 8 एमबी 4?