MySQL将0行的SUM转换为整数0

时间:2017-09-21 18:09:39

标签: mysql

在我的MySQL之旅中,MySQL越来越多地挑战我。假设我有TableA和TableB具有以下结构(它被简化以指出问题):

TableA
+------------------+
| IDA| Description |
|----|-------------|
| 1  | Something   |
| 2  | Else        |
| 3  | IDK         |
+------------------+

TableB
+------------------+
| IDA   | Amount   |
|------------------|
| 1     | 5        |
| 2     | 7        |
| 2     | 17       |
| 1     | 15       |
+------------------+

我的目标是,我总结每个身份证的金额。因此我使用以下代码

SELECT (SELECT SUM(amount) FROM TableB WHERE IDA = a.IDA) as Total, Description FROM TableA a

只要我TableB中有一行,此代码就可以正常运行。在此示例中,我获得IDA 3总计NULL 。在我更复杂的代码中,我将使用此代码进行计算,以便整个字段返回NULL

  • 我可以将NULL替换为0或转换它吗?
  • 是否可以在那里制作if else子句?

2 个答案:

答案 0 :(得分:2)

SELECT (SELECT SUM(IFNULL(amount,0)) FROM TableB WHERE IDA = a.IDA) as Total, Description FROM TableA a

部分IFNULL(amount,0)表示当金额不为空时返回金额,否则返回0

答案 1 :(得分:0)

coalesceleft join

的另一种方法
select a.*,
coalesce(sum(b.Amount),0) 
from tablea a
left join tableb b using(IDA)
group by a.IDA

DEMO