[英]MySQL Convert a SUM of 0 rows to an integer 0
在我的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
有一行,此代碼就可以工作。 在此示例中, 我為IDA 3獲得了總計NULL
。 在我更復雜的代碼中,我將使用此代碼進行計算,以便整個字段返回NULL
。
NULL
替換為0還是將其轉換? SELECT (SELECT SUM(IFNULL(amount,0)) FROM TableB WHERE IDA = a.IDA) as Total, Description FROM TableA a
IFNULL(amount,0)
表示, 當金額不為null時,返回金額,否則返回0 。
coalesce
和left join
coalesce
另一種方法
select a.*,
coalesce(sum(b.Amount),0)
from tablea a
left join tableb b using(IDA)
group by a.IDA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.