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

उन कॉलम नामों का चयन करें जिनकी प्रविष्टियाँ रिक्त नहीं हैं

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

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

  SELECT 'column_a'
  FROM   table_name
  WHERE `column_a` IS NOT NULL
  HAVING COUNT(*)
UNION ALL
  SELECT 'column_b'
  FROM   table_name
  WHERE `column_b` IS NOT NULL
  HAVING COUNT(*)
-- etc.

(कोई WHERE को छोड़ सकता है खंड और स्थानापन्न COUNT(*) COUNT(column) . के लिए , लेकिन मैं सोचता हूं जो अनुक्रमित स्तंभों पर कम कुशल हो सकता है)।

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

SET group_concat_max_len = 4294967295;

SELECT GROUP_CONCAT(
 ' SELECT ',QUOTE(COLUMN_NAME),
 ' FROM   table_name',
 ' WHERE `',REPLACE(COLUMN_NAME, '`', '``'),'` IS NOT NULL',
 ' HAVING COUNT(*)'
SEPARATOR ' UNION ALL ')
INTO   @sql
FROM   INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_SCHEMA = DATABASE()
   AND TABLE_NAME = 'table_name';

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. स्काला स्लिक कच्चे SQL क्वेरी में कई प्रकार के निहित रूपांतरण

  2. MySQL के साथ कई टेबल से रैंकिंग लौटाएं

  3. MYSQL ट्रिगर स्वचालित रूप से हटा दिया जाता है

  4. MySQL में पोलिश वर्णों के साथ AES_DECRYPT() और AES_ENCRYPT()

  5. जांचें कि क्या PHP संकलित किया गया है --with-mysql