Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm tất cả các cột chỉ có giá trị null, trong bảng MySQL

Bạn có thể tránh sử dụng quy trình bằng cách tạo động (từ INFORMATION_SCHEMA.COLUMNS bảng) một chuỗi chứa SQL mà bạn muốn thực thi, sau đó chuẩn bị một tuyên bố từ chuỗi đó và thực thi nó.

SQL mà chúng tôi muốn xây dựng sẽ giống như sau:

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

Điều này có thể được thực hiện bằng cách sử dụng như sau:

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;

Xem nó trên 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_real_escape_string () thực sự làm gì?

  2. Sự cố với MySQL cho Visual Studio / Visual Studio 2017 Datasource Wizard. Tham chiếu đối tượng không được đặt thành một phiên bản của đối tượng

  3. Lưu tệp CSV vào cơ sở dữ liệu mysql

  4. CodeIgniter- bản ghi hoạt động chèn nếu mới hoặc cập nhật trùng lặp

  5. Nhập tệp sql bằng phpmyadmin trong EasyPHP