2013-11-23 95 views
1

我不知道如何为我要问的问题标题问题标题。SQL Where Where子句同时与两个条件匹配

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

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

但是我试图问SQL是: “只返回行,当用户不是‘1’,他的状态不是‘1’在同一时间。如果这个组合不是真的,那么它可以返回这些行“。

所以,如果用户是“1”和状态是“2”,那么很好地返回这些行。

看起来很简单,但我不能想象如何做到这一点......请帮忙吗?

+0

替换'和'或' –

+1

您正在寻找此我想和':'! (m1.User ='1'或m1.Status ='1')'... – arkascha

回答

2

只是回答我的问题....这里就是答案。 'OR'不测试两者的结合是否正确。

解决方案:

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

因为这两个条件必须是真实的它不返回行。两者= AND,或者= OR。

0

您可以尝试使用此代替ORAND

SELECT 
* 
FROM 
MyTable m1 
WHERE 
!(m1.User = '1' OR m1.Status = '1') 
+0

为什么downvote? –

+0

道歉是downvote的错误。 –

-1
SELECT 
* 
FROM 
MyTable m1 
WHERE 
(m1.User <> '1' AND m1.Status <> '1') 

有这样做的方法很多:)

+0

这不起作用,因为如果m1.User ='1'和m1.Status ='2',它将不会返回结果。我只是要求它只在同一时间抑制结果。 –

+0

这不起作用,因为它与OP的查询相同 - 这不符合要求。 ('!='和'<>'运算符是等价的)。 –