Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Temukan semua kolom yang hanya memiliki nilai nol, di tabel MySQL

Anda dapat menghindari penggunaan prosedur dengan membuat secara dinamis (dari INFORMATION_SCHEMA.COLUMNS table) string yang berisi SQL yang ingin Anda jalankan, lalu menyiapkan pernyataan dari string itu dan menjalankannya.

SQL yang ingin kita buat akan terlihat seperti:

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

Ini dapat dilakukan dengan menggunakan yang berikut:

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;

Lihat di 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. MySQL memperbarui tabel yang digabungkan

  2. cara membuat menu dinamis dengan submenu dengan php &mysql

  3. Mysql2::Error:Nilai string salah

  4. Bergabung dengan 2 tabel di SELECT(MYSQL/PHP)

  5. Penyemaian SQLite RANDOM()