2013-11-23 123 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的查詢相同 - 這不符合要求。 ('!='和'<>'運算符是等價的)。 –