2014-01-23 137 views
0

我有麻煩了以下人類語言轉化爲MySQL查詢:選擇記錄,其中除A或B

Select all rows except those with ColA equals '1' OR ColB equals '1'. 

我想:

SELECT * FROM table WHERE ColA = '1' OR ColB = '1'; 

以上將拉動記錄是where子句匹配以上(ColA ='1'或ColB ='1'),但我如何得到相反的結果呢?我希望我正確地描述它。請讓我知道它是否令人困惑。

回答

0
select 
    * 
from 
    `myTable` 
where 
    `colA` <> 1 and 
    `ColB` <> 1 

這將適用於喲你只有在colAcolBNOT NULL。如果有colA = NULLcolB = NULL的行,則必須更改請求中的條件。

select 
    * 
from 
    `myTable` 
where 
    (`colA` <> 1 or `colA` is null) and 
    (`colB` <> 1 or `colB` is null) 

當然這取決於如果你想與NULL值的行,但很多人忘記了這一點。

這裏是SQL小提琴的例子http://www.sqlfiddle.com/#!2/ea797/2

+0

謝謝!這工作!這是空值將我拋棄。我混合了null和empty的值。其他人給予的解決方案的工作,但他們忘記了空值/空值。 –

1
SELECT * FROM table 
WHERE ColA <> '1' 
AND ColB <> '1' 

SELECT * FROM table 
WHERE NOT (ColA = '1' OR ColB = '1') 
+0

你打我吧。 –

0
SELECT * FROM table WHERE ColA <> '1' && ColB <> '1'; 
0
SELECT * FROM table WHERE ColA <> 1 AND ColB <> 1; 

,或者如果你想放大列表(1,2,3),而不是隻有(1),請嘗試:

SELECT * FROM table WHERE ColA NOT IN (1,2,3) AND ColB NOT IN (1,2,3); 
相關問題