2017-09-21 26 views
0

在我的MySQL旅程中,MySQL越來越挑戰我。比方說,我有表A和表B具有以下結構(也被簡化地指出問題):MySQL將0行的SUM轉換爲整數0

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

  • 我可以用0替換NULL或將其轉換嗎?
  • 是否有可能使if else子句在那裏?

回答

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

的部分IFNULL(amount,0)意味着時量不是返回null量否則返回0

0

與​​3210和left join

select a.*, 
coalesce(sum(b.Amount),0) 
from tablea a 
left join tableb b using(IDA) 
group by a.IDA 

DEMO

另一種方法