mysql - 如何在 SQL 中选择没有空值的行(在任何列中)?
问题描述
我有一张桌子叫table1
它有 100 列: { col1
, col2
, ..., col100
}
我了解如何在特定列中不包含空值的行SELECT
,例如col1
:
SELECT *
FROM table1
WHERE col1 IS NOT NULL
如何在任何列中
SELECT
所有不包含空值的行
试图
SELECT *
FROM table1
WHERE * IS NOT NULL
但这会返回一个错误MySQL
(我正在使用)
解决方案
虽然我建议写出每个列名并按照建议重构您的表,但这里有一个使用选项dynamic sql
:
SET @sql = NULL;
SELECT CONCAT('SELECT * FROM table1 WHERE ',
GROUP_CONCAT(c.COLUMN_NAME SEPARATOR ' IS NOT NULL AND '),
' IS NOT NULL') INTO @sql
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'table1'
ORDER BY c.ORDINAL_POSITION;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
推荐阅读
- css - Safari 12 中对象位置的 CSS 动画
- c# - console.write("\r") 不在服务器上的同一行中显示元素
- jquery - 可见性“动画”,但 SCSS 中的反向效果有延迟
- java - 带有逗号分隔的 currentFunctionPath 列表的 JDBC DB2 URL
- android - 在布局的中心|底部添加一个静态按钮
- azure - 了解 Test-AzureRmPrivateIPAddressAvailability 。应用程序网关私有 IP 被列为可用
- html - 启用键盘的 html 元素布局
- c++ - C ++初始化数组最后一个值是随机的
- python - 如何在 python 中使用字典比较类型?
- node.js - 如何解决 fs.existsSync 不是函数