匿名用户

1级

2014-12-11 回答

SELECT * FROM test WHERE state IS NULL AND 1 > (SELECT COUNT(*) FROM test t
WHERE t.state = 0)

追问:

请问 SELECT * FROM test WHERE state IS NULL AND 1 和(SELECT COUNT(*) FROM test t
WHERE t.state = 0) 是同一条数据

查询1的时候

如果 2的state为0的话也得查出来得

追答:

哦,刚看明白,我再改改。

追问:

字段 id name state

1 你好 null

2 你 null

1 你 0

2 你好 0

查询肯定是一条条查询得SELECT * FROM test WHERE state IS NULL查出一条,比较下当前这条,在test中有无state为0的
,注意是当前

麻烦了哈

追答:

SELECT * FROM test WHERE id NOT IN(SELECT id FROM test WHERE state = 0 ) AND
state IS NULL

追答:

SELECT * FROM test WHERE id NOT IN(SELECT id FROM test WHERE state = 0 ) AND
state IS NULL

追问:

谢谢哈 还是会查出来

比如

1 你好 null

2 你 null

1 你 0

会把 1 你好 null 查出来

追答:

SELECT * FROM test WHERE id NOT IN(SELECT id FROM test WHERE state = 0 ) AND
state IS  NULL

结果:

追问:

额额 我再看看哈

追答:

我的state是int型,你要是字符窜就改改。

追问:

恩恩 改好了

再请教下 如果有的id没有为Null但是state为0 像这种数据不用过滤 该怎么改?

谢谢了

追答:

如果有的id没有为Null但是state为0 像这种数据不用过滤 该怎么改?

没明白。是不是含有state为null的且含有state为0的就不查,否则都查出来。

那么:

SELECT * FROM test WHERE id NOT IN(

SELECT id FROM test WHERE (id IN(SELECT id FROM test WHERE state = 0 ) AND
state IS NULL )

)

追问:

意思是比如

1 你好 null

2 你 null

1 你 0

null 好 0

查询得时候把 2 你 null 、null 好 0 这两条查出来

第二条没id 不应该查不出来

追答:

SELECT * FROM test WHERE id IS NULL OR ( id NOT IN ( SELECT id FROM test WHERE
state = 0 AND id IS NOT NULL ) AND state IS NULL)

这样

技术
©2019-2020 Toolsou All rights reserved,
TypeScript:函数类型接口8道大厂指针笔试题让你秒杀指针!!!MySQL 日期时间加减mysql 查询条件之外的数据_mysql 查询符合条件的数据查linux的操作系统版本,如何查看Linux操作系统版本?将String类型转换成Map数据类型使用uuid做MySQL主键,被老板,爆怼一顿C语言中的字符串函数和字符函数linux服务器中毒排查--基础篇C# ASCII码字符转换