mysql 查询条件之外的数据_mysql 查询符合条件的数据

匿名用户

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 查出来

追答:

mysql 查询条件之外的数据_mysql 查询符合条件的数据_第1张图片

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

结果:

90dc34a9c7e98ed8b2e0f553ab3f1294.png

追问:

额额 我再看看哈

追答:

我的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)

这样

你可能感兴趣的:(mysql,查询条件之外的数据)