在我的MySQL之旅中,MySQL对我的挑战越来越大。假设我有具有以下结构的TableA和TableB (简化为指出问题):
TableA
+------------------+
| IDA| Description |
|----|-------------|
| 1 | Something |
| 2 | Else |
| 3 | IDK |
+------------------+
TableB
+------------------+
| IDA | Amount |
|------------------|
| 1 | 5 |
| 2 | 7 |
| 2 | 17 |
| 1 | 15 |
+------------------+我的目标是现在,我总结每一个id的数量。因此,我使用以下代码
SELECT (SELECT SUM(amount) FROM TableB WHERE IDA = a.IDA) as Total, Description FROM TableA a只要我在我的TableB中有一行代码,这段代码就能工作。在这个例子中,我得到了NULL. 3的--的总数在我的更复杂的代码中,我将用这段代码进行计算,这样整个字段就会返回NULL。
NULL 或转换它?发布于 2017-09-21 18:12:11
SELECT (SELECT SUM(IFNULL(amount,0)) FROM TableB WHERE IDA = a.IDA) as Total, Description FROM TableA a部件IFNULL(amount,0)意味着当“金额”为空时,“其他值”返回值为0。
发布于 2017-09-21 18:22:25
使用coalesce和left join的另一种方法
select a.*,
coalesce(sum(b.Amount),0)
from tablea a
left join tableb b using(IDA)
group by a.IDA演示
https://stackoverflow.com/questions/46350599
复制相似问题