我有一个名为table1
的表
它有100列:{col1
,col2
,...,col100
}
我了解如何select
特定列中不包含空值的行,例如col1
:
SELECT *
FROM table1
WHERE col1 IS NOT NULL
如何选择
任何列中不包含空值的所有行
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;