下面是我的表格行结构
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
答案 0 :(得分:2)
试试这个:
select c1
from table
group by c1
having sum(c7 is null) = 0
这将返回没有c7值为null的c1的所有值。
对于更常用的(所有数据库)解决方案,请使用:
having sum(case when c7 is null then 1 end) = 0
或者
having count(c7) = count(*)
答案 1 :(得分:1)
NOT EXISTS
版本:
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。上面的答案返回c1值只有NULL的c1值。
如果问题是为c7找到没有NULL的c1值,请将子选择IS NOT NULL
更改为IS NULL
。
如果c1值即使多次出现也只返回一次,请SELECT DISTINCT
。