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

एक MySQL तालिका में उन सभी कॉलमों को खोजें जिनमें केवल शून्य मान हैं

आप (INFORMATION_SCHEMA.COLUMNS तालिका) एक स्ट्रिंग जिसमें SQL शामिल है जिसे आप निष्पादित करना चाहते हैं, फिर बयान तैयार करना उस स्ट्रिंग से और उसे क्रियान्वित करना।

हम जिस SQL ​​​​का निर्माण करना चाहते हैं वह इस तरह दिखेगा:

SELECT * FROM (
  SELECT 'tableA' AS `table`,
         IF(COUNT(`column_a`), NULL, 'column_a') AS `column`
  FROM   tableA
UNION ALL
  SELECT 'tableB' AS `table`,
         IF(COUNT(`column_b`), NULL, 'column_b') AS `column`
  FROM   tableB
UNION ALL
  -- etc.
) t WHERE `column` IS NOT NULL

यह निम्नलिखित का उपयोग करके किया जा सकता है:

SET group_concat_max_len = 4294967295; -- to overcome default 1KB limitation

SELECT CONCAT(
         'SELECT * FROM ('
       ,  GROUP_CONCAT(
            'SELECT ', QUOTE(TABLE_NAME), ' AS `table`,'
          , 'IF('
          ,   'COUNT(`', REPLACE(COLUMN_NAME, '`', '``'), '`),'
          ,   'NULL,'
          ,    QUOTE(COLUMN_NAME)
          , ') AS `column` '
          , 'FROM `', REPLACE(TABLE_NAME, '`', '``'), '`'
          SEPARATOR ' UNION ALL '
         )
       , ') t WHERE `column` IS NOT NULL'
       )
INTO   @sql
FROM   INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_SCHEMA = DATABASE();

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

इसे sqlfiddle पर देखें ।



  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 फ्लोट से लौटाया गया गलत मान

  4. रेडीस्टेडमेंट सिंटैक्स त्रुटि फेंकता है

  5. संबंधपरक डेटाबेस में ऑब्जेक्ट-ओरिएंटेड जैसी संरचनाएं