2011-01-23 113 views
1

有人能告訴我爲什麼這不起作用嗎?我想獲得兩個不同列的總和並將它們加在一起。測試數據在一列中是10,在另一列中是10,總共是20,這正是我所期望的。Mysql加法,結果不如預期

Sum(col1 + col2) as total 

回答

5

可能在一列或兩列中都有一些NULL值。集合函數SUM會忽略NULL值,但添加運算符不會 - (1 + NULL)的值爲NULL(不像您所期望的那樣)。結果總和會低於預期。

要獲得正確的總和,你可以每列分別求和,並添加結果:

SUM(col1) + SUM(col2) AS total 

如果列一個可以被完全NULL這仍然無法工作。然後,你可以試試這個:

SUM(IFNULL(col1, 0)) + IFNULL(col2, 0)) AS total 

例如,假設你有這樣的表:

 
col1 | col2 
-----+---- 
5 | NULL 
5 | 10 

然後嘗試這些不同的查詢:

SELECT SUM(col1), SUM(col2)  FROM yourtable; -- Returns 10, 10 
SELECT SUM(col1 + col2)   FROM yourtable; -- Returns 15 
SELECT SUM(col1) + SUM(col2)  FROM yourtable; -- Returns 20 
SELECT SUM(col1 + IFNULL(col2, 0)) FROM yourtable; -- Returns 20 

測試數據:

CREATE TABLE yourtable (col1 INT NOT NULL, col2 INT NULL); 
INSERT INTO yourtable (col1, col2) VALUES (5, NULL), (5, 10); 
+0

謝謝馬克。就是這樣。 :) – jim 2011-01-23 09:08:32