0

如何编写 sql 查询以仅返回表中的行

例如,列 A 不为空且列 B 不为 0

我写它的方式是:

where A is not null AND B !=0 

但问题是查询结果也消除了只有一个条件为真的行,例如列 a 为空,但列 b 不是 0,反之亦然

我需要查询仅消除(不返回)满足 where 子句的两个条件的行。

我只希望我从查询中获得的结果是表中的行,其中列 A 不是 NULL,列 B 不是 = 0,但我需要满足两个条件,而不仅仅是其中一个

4

3 回答 3

2

如果我理解正确,您正在寻找:

where A is not null AND B <> 0  

如果您的 where 子句实际上更复杂(例如,其中也有一个OR),则在上面加上括号,例如:

where (A is not null AND B <> 0) OR ...
于 2012-04-17T15:59:37.257 回答
1

我需要查询...返回满足我的 where 子句的两个条件的行。

听起来您想否定 WHERE 子句。像这样:

WHERE NOT (A IS NOT NULL AND B !=0)

这可以在没有双重否定的情况下重写:

WHERE (A IS NULL OR B = 0 OR B IS NULL)
于 2012-04-17T22:25:51.427 回答
0

有人在此处发布了此答案,但随后他们将其删除(不知道为什么?),但他们的答案确实有效。

WHERE NOT(A is null AND B=0)

我尝试使用

where A is not null AND B <> 0   

where (A is not null AND B <> 0) 

但是即使只满足其中一个条件,也会触发 where 子句,并且我需要仅在满足两个条件时才触发它。

再说一次,我的问题的答案是使用下面的代码。

WHERE NOT(A is null AND B=0)

谢谢!

于 2012-04-19T14:38:08.633 回答