1 mysql
有人可以告诉我为什么这不起作用?我想得到两个不同列的总和并将它们加在一起.测试数据在一列中为10,在另一列中为10,总共为20,这正是我所期待的.
Sum(col1 + col2) as total
Run Code Online (Sandbox Code Playgroud)
可能在一列或两列中都有一些NULL值.汇总函数SUM忽略NULL值,但加法运算符不 - (1 + NULL)值为NULL(而不是1,你所期望的).结果总和将低于预期.
要获得正确的总和,可以单独对每列进行SUM并添加结果:
SUM(col1) + SUM(col2) AS total
Run Code Online (Sandbox Code Playgroud)
如果其中一列可能完全为NULL,则仍然无效.然后你可以尝试这个:
SUM(IFNULL(col1, 0)) + IFNULL(col2, 0)) AS total
Run Code Online (Sandbox Code Playgroud)
例如,假设你有这个表:
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
Run Code Online (Sandbox Code Playgroud)
测试数据:
CREATE TABLE yourtable (col1 INT NOT NULL, col2 INT NULL);
INSERT INTO yourtable (col1, col2) VALUES (5, NULL), (5, 10);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |