1. 程式人生 > >mysql NULL 值求和問題

mysql NULL 值求和問題

今天一個同事問我一個問題,他執行一條如下的求和的sql語句:

select sum(a + b + c + d),sum (a),sum(b),sum(c),sum(d) from T ;
結果是:11,3,5,3,5,也就是 放在一塊求和分別求和,結果不一致, 剛一看問
題,也覺得挺奇怪,但是馬上想到了這麼一個問題,是不是a,b,c,d 中有null 的
情況,檢視他的資料表後,發現果然a,b,c,d 有存在 null 的情況,就可以解釋
為什麼會出現不一致的情況。
首先,我們可以測試執行下:
mysql> select 1 + null;
+----------+
| 1 + null |
+----------+
|     NULL |
+----------+
返回結構就是NULL。
所以對於表格T中任何一條資料,只要a,b,c,d中有一個存在null 的資料, a + b + c + d 都會變成null,而在求和運輸中,null 會別忽略,這就導致了上面的求和不一致。