我不知道如何用我的问题标题来表达我要问的问题。
如果我的 where
子句的组合为真,我有一个 SELECT 查询,该查询不得返回任何行。这是我的示例代码:
SELECT
*
FROM
MyTable m1
WHERE
(m1.User != '1' AND m1.Status != '1')
但是我想问SQL的是: “仅当用户不是“1”并且其状态同时不是“1”时才返回行。如果此组合不为真,则可以返回这些行” .
因此,如果用户为“1”且状态为“2”,则可以返回这些行。
看起来很简单,但我无法想象如何做到这一点...请帮忙?
最佳答案
刚刚回答了我自己的问题......这就是答案。 “OR”不会测试两者的组合是否正确。
解决方案:
SELECT
*
FROM
MyTable m1
WHERE NOT
(m1.User = '1' AND m1.Status = '1')
因为两个条件都必须为真才能不返回行。两者 = AND,任一 = OR。
关于同时匹配两个条件的 SQL Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20162575/