我不知道如何用我的问题来表达我的问题标题。
我有一个SELECT查询,如果我的where
子句的组合为true,则不能返回任何行。这是我的示例代码:
SELECT
*
FROM
MyTable m1
WHERE
(m1.User != '1' AND m1.Status != '1')
但我想问的是SQL: “当用户不是'1'时才返回行,并且他的状态同时不是'1'。如果组合不是真的,那么可以返回那些行” 。
因此,如果用户为“1”且状态为“2”,则可以返回这些行。
似乎很简单,但我无法想象如何做到这一点......请帮忙吗?
答案 0 :(得分:2)
刚刚回答了我自己的问题......这就是答案。 'OR'不会测试两者的组合是否正确。
解决方案:
SELECT
*
FROM
MyTable m1
WHERE NOT
(m1.User = '1' AND m1.Status = '1')
因为两个条件都必须为真,因为它不返回行。两者= AND,或者= OR。
答案 1 :(得分:0)
您可以使用OR
代替AND
来尝试此操作:
SELECT
*
FROM
MyTable m1
WHERE
!(m1.User = '1' OR m1.Status = '1')
答案 2 :(得分:-1)
SELECT
*
FROM
MyTable m1
WHERE
(m1.User <> '1' AND m1.Status <> '1')
有很多方法可以做到这一点:)