在我的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或转换它吗? 答案 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)
coalesce
和left join
select a.*,
coalesce(sum(b.Amount),0)
from tablea a
left join tableb b using(IDA)
group by a.IDA