2012-04-17 61 views
0

如何可以寫一個SQL查詢只從一個表SQL指定2個不同的條件在與兩個具有子句爲真

其中例如A列不爲空和庫侖乙返回行2個不同的列不爲0

我寫它的方式是:

where A is not null AND B !=0 

但問題是,查詢結果也消除了行,其中僅條件之一爲真,如列被空,但列b只是0 &反之亦然

我需要查詢來消除(而不是返回)滿足我的where子句的BOTH條件的行。

我只想要的結果我從查詢到從這裏A列是NOT NULL和B列的錶行IS NOT = 0,但我需要得不到滿足BOTH條件只是其中之一

+0

到目前爲止你有什麼? – 2012-04-17 15:57:16

+0

@armit Bhargave如果只有一個條件爲真,我不希望任何行因爲where子句而被刪除。如果兩個條件都爲真(對於表的特定行),我只希望行不會被返回。我得到幾條記錄,因爲只有滿足1條件的行也不會被返回 – 2012-04-17 15:59:55

+1

請提供樣本數據和期望的輸出。 – RedFilter 2012-04-17 16:01:52

回答

0

有人張貼在這裏這個答案,但然後他們刪除了(不知道爲什麼?),但他們的回答工作,這是。

WHERE NOT(A is null AND B=0) 

我嘗試使用

where A is not null AND B <> 0 

where (A is not null AND B <> 0) 

,但即使只有1的條件下遇到的where子句將被觸發,我需要它來觸發只有當兩個條件都滿足。

再次,我的問題的答案是使用下面的代碼。

WHERE NOT(A is null AND B=0) 

謝謝!

2

如果我理解正確的,你正在尋找:

where A is not null AND B <> 0 

如果你的where子句實際上是更復雜(例如,也有它的一個OR),然後把括號以上,如:

where (A is not null AND B <> 0) OR ... 
+0

我認爲它應該是或B = 0 – 2012-04-17 16:01:24

+0

我只希望從查詢得到的結果是表中的行,其中A列不是NUll和B列IS不是= 0 但我需要滿足兩個條件而不是隻是其中之一 – 2012-04-17 16:01:45

+0

@JuanVelez我更新了我的回覆。 – RedFilter 2012-04-17 16:02:36

1

我需要查詢... 不是返回滿足我的where子句條件的行。

這聽起來像你想否定WHERE子句。像這樣:

WHERE NOT (A IS NOT NULL AND B !=0) 

這可沒有雙負被改寫:

WHERE (A IS NULL OR B = 0 OR B IS NULL) 
+0

我最後不得不使用WHERE NOT子句,正如你所建議的,但我不希望我的結果包含任何行,其中A爲空且B = 0,所以我不得不使用WHERE NOT(A爲null且B = 0) – 2012-04-19 14:40:48