所有列的sql语句不为空

k4ymrczo  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(392)

我正在处理一个查询,我的表非常大,有很多列。我不想在where子句中键入每个单独的列—有没有一种方法可以让我不必编写它们而选择所有列,类似这样的事情(下面不起作用):

select *
from table t
where t.* is not NULL
qnzebej0

qnzebej01#

你可以试着从 information_schema.columns 然后执行表 dynamic sql .
这样地。

SET @Efields := '';
SET @Esql:='';
SET @Table_Name = 'table1';

select @Efields := GROUP_CONCAT(COLUMN_NAME SEPARATOR ' IS NOT NULL AND ') 
from information_schema.columns
where TABLE_NAME = @Table_Name;
SELECT @Esql:=CONCAT('select * from ',@Table_Name ,'  WHERE ',@Efields,' IS NOT NULL ');

PREPARE stmt1 FROM  @Esql; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1;

sqlfiddle:https://www.db-fiddle.com/f/32pise5bchksvpzk6ljep3/0

5fjcxozz

5fjcxozz2#

如果需要,可以在where子句中执行以下操作(假设表中的列数为10):

Select T.*
from [TABLE] T
where 1|2|3|4|5|6|7|8|9|10 is not null

相关问题