2014-04-28 64 views
-2

有一個查詢等同於像對凡在聲明

WHERE some_field IN (1, 2, !3, !4) 

意味着

WHERE some_field = 1 AND some_field = 2 AND some_field != 3 AND some_field != 4 

MySQL查詢變化?

+2

的3或4 some_field值some_field怎麼可以有兩個不同的價值一次? IN翻譯成OR不是AND AND –

+0

你想要的東西必須是'OR'而不是'AND',請重新檢查。 – Saurabh

+0

我認爲答案是否定的,因爲在同一組中有1而不是3是沒有意義的。 – linpingta

回答

-2

您應該具備以下條件where既是一個共同無厘頭: -

WHERE some_field IN (1, 2) 

WHERE some_field NOT IN (3, 4) 
+2

這不會做什麼不同於WHERE some_field IN(1,2) –

+0

@MarshallTigerus:我已經在它們之間放了一個'OR'條件,而不是'和',所以這兩個條件都有作用,我認爲這是問題的意圖。 – Saurabh

+0

我不確定這是否有效。第二個聲明使得第一個多餘的 –

-2

這在很大程度上取決於上下文。

Where some_field IN (1, 2) 

已經不會回到那裏some_field等於3或4

的可能的情況是,你必須用相同的ID相關聯some_field許多版本的一個表,你想只返回那些記錄與1和2 some_fields,但如果他們也有3或4在表中,你想排除他們。然後,你會想要做的事,如:

Select * from table 
WHERE some_field = 1 
AND some_ID in (select some_ID from table 
      where some_field = 2) 
AND some_ID Not IN (select some_ID from table 
       where some_field IN (3, 4)) 

這將排除所有的ID從結果列表中以1:1的some_field和2

+0

你怎麼把'ID IN'和'ID NOT IN'放在哪裏? – Saurabh

+0

我假設表有一個主鍵。你也可以使用存在而不存在,但我更喜歡IN和NOT IN –