1
有人能告訴我爲什麼這不起作用嗎?我想獲得兩個不同列的總和並將它們加在一起。測試數據在一列中是10,在另一列中是10,總共是20,這正是我所期望的。Mysql加法,結果不如預期
Sum(col1 + col2) as total
有人能告訴我爲什麼這不起作用嗎?我想獲得兩個不同列的總和並將它們加在一起。測試數據在一列中是10,在另一列中是10,總共是20,這正是我所期望的。Mysql加法,結果不如預期
Sum(col1 + col2) as total
可能在一列或兩列中都有一些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);
謝謝馬克。就是這樣。 :) – jim 2011-01-23 09:08:32