SQL条款同时匹配两个条件的条款

时间:2013-11-23 12:58:52

标签: sql sql-server

我不知道如何用我的问题来表达我的问题标题。

我有一个SELECT查询,如果我的where子句的组合为true,则不能返回任何行。这是我的示例代码:

SELECT 
 *
FROM
 MyTable m1
WHERE
 (m1.User != '1' AND m1.Status != '1')

但我想问的是SQL: “当用户不是'1'时才返回行,并且他的状态同时不是'1'。如果组合不是真的,那么可以返回那些行” 。

因此,如果用户为“1”且状态为“2”,则可以返回这些行。

似乎很简单,但我无法想象如何做到这一点......请帮忙吗?

3 个答案:

答案 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')

有很多方法可以做到这一点:)