如何编写 sql 查询以仅返回表中的行
例如,列 A 不为空且列 B 不为 0
我写它的方式是:
where A is not null AND B !=0
但问题是查询结果也消除了只有一个条件为真的行,例如列 a 为空,但列 b 不是 0,反之亦然
我需要查询仅消除(不返回)满足 where 子句的两个条件的行。
我只希望我从查询中获得的结果是表中的行,其中列 A 不是 NULL,列 B 不是 = 0,但我需要满足两个条件,而不仅仅是其中一个
如何编写 sql 查询以仅返回表中的行
例如,列 A 不为空且列 B 不为 0
我写它的方式是:
where A is not null AND B !=0
但问题是查询结果也消除了只有一个条件为真的行,例如列 a 为空,但列 b 不是 0,反之亦然
我需要查询仅消除(不返回)满足 where 子句的两个条件的行。
我只希望我从查询中获得的结果是表中的行,其中列 A 不是 NULL,列 B 不是 = 0,但我需要满足两个条件,而不仅仅是其中一个
如果我理解正确,您正在寻找:
where A is not null AND B <> 0
如果您的 where 子句实际上更复杂(例如,其中也有一个OR
),则在上面加上括号,例如:
where (A is not null AND B <> 0) OR ...
我需要查询...不返回满足我的 where 子句的两个条件的行。
听起来您想否定 WHERE 子句。像这样:
WHERE NOT (A IS NOT NULL AND B !=0)
这可以在没有双重否定的情况下重写:
WHERE (A IS NULL OR B = 0 OR B IS NULL)
有人在此处发布了此答案,但随后他们将其删除(不知道为什么?),但他们的答案确实有效。
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)
谢谢!