2013-02-04 70 views
0

我有一個查詢如何通過包含空值編寫一個查詢太

SELECT sum(cash) from bought_cash WHERE uid=1 AND source NOT IN ('a', 'b') 

給出結果爲140

SELECT sum(cash) from bought_cash WHERE uid=1 AND source IN ('a', 'b') 

NULL

SELECT sum(cash) from bought_cash WHERE uid=1 

給人造成爲240

SELECT sum(cash) from bought_cash WHERE uid=1 and source is null 

給出的結果100

如何編寫一個查詢,以便第一個查詢通過包含空值給出結果爲240

+0

你確定它應該是240的結果,我看不出爲什麼這不會是正確的。 – bretterer

+0

您的意思是您希望「NULL」值位於您的第一個查詢中嗎? –

+1

在第一個查詢中,iam不包括where子句中的空值,所以結果應該包含空值對嗎? – shanks

回答

1

你也可以嘗試下:

select sum(cash) 
from bought_cash 
where uid = 1 and (source is null or source not in ('a', 'b')) 
+0

謝謝你的工作。但爲什麼不包含缺省值的空值? – shanks

+0

,因爲空值符號爲sql標準的缺失值,並且當您在IN標準中包含空值時,NULL變爲未知值 – veljasije

+1

實際上它是默認包含的,但對於SUM操作,您將添加NULL,不包含任何價值。它像1 +空= 1 –

0

你可以嘗試這樣的事:

select sum(cash) from bought_cash 
    where uid=1 and isnull(source, 'c') not in ('a', 'b') 

這應該映射爲空項的值「C」,這是不是「A」或「B」,所以應該被包括在結果集。

相關問題