mysql查看表中的空值_在MySQL表中查找只有空值的所有列

您可以通过动态创建(从

INFORMATION_SCHEMA.COLUMNS表)包含要执行的SQL的字符串,然后从该字符串中执行

preparing a statement来避免使用该过程。

我们希望构建的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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值