Mysql 如何检查所有行是否有值

Mysql 如何检查所有行是否有值,mysql,sql,sql-server,sql-server-2008,Mysql,Sql,Sql Server,Sql Server 2008,下面是我的表格行结构 select c1 from table where c7 is not null 我需要c1值,如果c7,如果行中的任何一个有空值,它不应该有空值 来吧,我可以知道谁能做这件事吗。。 现在我得到的列有值,但我需要,如果有一次有空值,那个条目不应该出现 c1 c2 c3 c4 c5 c6 c7 31 1 1 BOQ NULL 1 Item5 31 2 1 BOQ NULL 2 Item5 31 3 2

下面是我的表格行结构

select  c1 from table where  c7 is not null
我需要c1值,如果c7,如果行中的任何一个有空值,它不应该有空值 来吧,我可以知道谁能做这件事吗。。 现在我得到的列有值,但我需要,如果有一次有空值,那个条目不应该出现

c1  c2  c3   c4  c5     c6   c7
31  1   1   BOQ NULL    1   Item5
31  2   1   BOQ NULL    2   Item5
31  3   2   BOQ NULL    3   Itmem7
31  4   3   BOQ NULL    4   Item9
31  5   4   BOQ NULL    5   Item5
31  6   5   BOQ NULL    6   Item5
31  7   6   BOQ NULL    7   NULL
31  8   7   BOQ NULL    8   NULL
31  9   8   BOQ NULL    9   NULL
31  10  9   BOQ NULL    10  NULL
32  1   1   BOQ NULL    1   NULL
32  2   2   BOQ NULL    2   NULL
33  1   0   BOQ NULL    1   NULL
33  2   1   BOQ NULL    3   NULL
试试这个:

select c1
from table
group by c1
having sum(c7 is null) = 0
这将返回c1的所有值,其中没有为null的c7值

要获得更通用的(所有数据库)解决方案,请使用:

having sum(case when c7 is null then 1 end) = 0


不存在
版本:

select c1
from tablename t1
where not exists (select 1 from tablename t2
                  where t1.c1 = t2.c1 and t2.c7 is not null)
也许我误解了OP。上面的答案返回c7只有NULL的c1值

如果问题是要查找c7不为NULL的c1值,请将子选择的
不为NULL
更改为
为NULL


如果一个c1值即使多次出现也只应返回一次,请执行
选择DISTINCT

请格式化,这很难读取?对不起,我听不懂你的英语,所以不知道你想要什么。@zerkms从标签上看,我猜是SQL Server而不是MySQL,但谁知道呢@DavidG第一个标记就是mysql。更不用说
ALL
是一个ANSI SQL函数。注意:如果这个查询不使用隐式
Bool->Numeric
cast,它会(更)对ANSI SQL友好。这个查询在mysql上运行吗?我试过了,但似乎没有results@A.D.乍一看-它应该在mysql上运行,并返回所有
c7不等于null的
c1
,老实说,我会使用
COUNT()
,因为这里更具语义-我们需要得到元素的数量,而不是它们的摘要(即使后者是从前者派生出来的)因此,简单的
COUNT(c7)=0
COUNT(c7为空)=0
@zerkms FYI
COUNT(c7为空)=0
不起作用-请自己从表t2中尝试
——什么是
t2
select c1
from tablename t1
where not exists (select 1 from tablename t2
                  where t1.c1 = t2.c1 and t2.c7 is not null)