2017-07-08 109 views
0

我的數據庫中有兩列。欄r和欄l。 我有兩行。行302和行303MYSQL計算返回錯誤的值

對於302行,我有以下數據

--------------------------- 
| k_id | l | r | 
|-------------------------- 
| 302  | 400 | 0 | 
| 303  | 0  | 400 | 
--------------------------- 

我試圖運行SQL語句在ll選擇總。

在這種情況下,計算結果必須是:400 - 400 = 0。但是當我運行查詢時,我得到400而不是0

有人知道我爲什麼沒有得到正確的答案嗎?

這裏是我的SQL語句:

SELECT COALESCE(SUM(l), 0) - COALESCE(SUM(r), 0) as total 
FROM trans 
WHERE user_id = '1' AND k_id IN ('302', '303') 
GROUP BY k_id WITH ROLLUP LIMIT 0,1 
+0

爲什麼'極限'? –

+0

爲什麼要使用COALESCE。爲什麼不加上「l」,然後減去「r」呢? – Difster

+0

我刪除了限制,沒有限制的響應是三行,第一行:'400',第二行:'-400',第三行:'0' – John

回答

2

的問題是語句的group by k_id一部分。這指示mysql通過k_id值進行求和,因此302和303將分開彙總。刪除group by子句和彙總,你會得到0.