mysql:在表中添加列的值

eiee3dmh  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(230)

我的table上有这个结构

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

你能帮帮我吗

lnlaulya

lnlaulya1#

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
slmsl1lt

slmsl1lt2#

我想你想要:

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

我会做的 NULL 之后的转换 SUM() ,因为有些 source_id 我们只有 NULL 在其中一列中。

mlnl4t2r

mlnl4t2r3#

使用 Ifnull() 要替换的函数 null 值为0。
使用 Sum() 函数对单个表达式中的val1和val2求和,使用 Group By 在源id上。
执行以下操作:

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

相关问题