MySQL的:添加表中的列的值

时间:2018-10-02 13:04:34

标签: mysql sql

我的桌子上有这个结构

id|source_id|val1|val2
1 |1        |10  |NULL
2 |1        |NULL|3
3 |2        |NULL|5
4 |2        |4   |NULL
5 |3        |7   |NULL

我想在mysql中使用它

source_id|total
1        |13
2        |9
3        |7

你能帮我吗

3 个答案:

答案 0 :(得分:4)

  • 使用Ifnull()函数将null的值替换为0。
  • 在source_id上​​使用Group By,使用Sum()函数在单个表达式中对val1和val2求和。

执行以下操作:

SELECT ressource_id, 
       SUM(IFNULL(val1, 0)) + SUM(IFNULL(val2, 0)) AS total 
FROM your_table 
GROUP BY ressource_id 

答案 1 :(得分:2)

我想你想要

select source_id, coalesce(sum(val1), 0) + coalesce(sum(val2), 0)
from t 
group by source_id;

我会在NULL之后的{em>之后进行SUM()转换,因为某些source_id仅在其中一列中有NULL

答案 2 :(得分:0)

SELECT q.resource_id, 
       ( q.val1 + q.val2 ) AS total 
FROM  (SELECT resource_id, 
              Ifnull(Sum(val1), 0) AS val1, 
              Ifnull(Sum(val2), 0) AS val2 
       FROM   `table` 
       GROUP  BY resource_id) AS q