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

MySql कॉलम नाम के रूप में गतिशील पंक्ति मानों का चयन करें

group_concat . का उपयोग करने के संदर्भ प्रश्न के दृष्टिकोण से आप ऐसा कर सकते हैं, लेकिन एक बात ध्यान दें क्योंकि आपकी जॉब आईडी प्रति exec_id के अनुसार बढ़ती जाती है फिर ग्रुप करें group_concat 1024 वर्णों की डिफ़ॉल्ट लंबाई के कारण दृष्टिकोण इष्टतम नहीं होगा और आपके गतिशील स्तंभों के लिए यह निश्चित रूप से उस सीमा को पार कर जाएगा, लेकिन इस सीमा को बढ़ाया जा सकता है जैसा कि documentation

SET @sql = NULL;

SELECT GROUP_CONCAT(DISTINCT
  CONCAT('MAX(CASE WHEN job_id = ''',
         job_id, 
         ''' THEN start_time END) `',
         job_id,
         '_start`',
         ',',
         'MAX(CASE WHEN job_id = ''',
         job_id,
         ''' THEN end_time END) `',
         job_id,
         '_end`' 
         )

 )
  INTO @sql
  FROM t;

SET @sql = CONCAT('SELECT exec_id, ', @sql, ' 
                     FROM t 
                    GROUP BY exec_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Fiddle Demo



  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 और MySQL:लौटाई गई पंक्तियों की संख्या

  2. PHP सिंगलटन डेटाबेस कनेक्शन पैटर्न

  3. mysql डेटाबेस में html सामग्री सहेजना

  4. MySQL में अगली उपलब्ध आईडी ढूँढना

  5. PHP पासवर्ड_ सत्यापित करें डेटाबेस के विरुद्ध काम नहीं कर रहा है