提问者:小点点

如何在SQL中选择没有空值的行(在任何列中)?


我有一个名为table1的表

它有100列:{col1,col2,...,col100}

我了解如何select特定列中不包含空值的行,例如col1:

SELECT *
FROM table1
WHERE col1 IS NOT NULL

如何选择任何列中不包含空值的所有行

SELECT *
FROM table1
WHERE * IS NOT NULL

但这将在mysql(我正在使用)中返回一个错误


共1个答案

匿名用户

虽然我建议写出每个列名并按照建议重构表,但这里有一个使用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;
  • DB小提琴演示