首页 > 解决方案 > 如何在 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(我正在使用)

标签: mysqlsqlisnull

解决方案


虽然我建议写出每个列名并按照建议重构您的表,但这里有一个使用选项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;

推荐阅读