2014-12-04 82 views
1

我有以下存儲過程MySQL的替代NULL一些價值

BEGIN 
SELECT kids.*, SUM(point) as `point_sum` 
FROM kids 
    LEFT JOIN tasks 
    ON kids.id = tasks.kid_id 
WHERE kids.user_id = IN_user_id 
GROUP BY kids.name; 
END 

此語句工作正常。

我的問題:新用戶的SUM(point)通常爲NULL,因爲沒有提交的值尚未加總。 我想要的是,如果SUM(point)NULL那麼它應該返回值如0,但否則它應該呈現總和。我環顧四周,不知道如何解決它,有什麼好主意?

+1

使用'IFNULL'或'COALESCE' - 'COALESCE(SUM(點),0)'... – sgeddes 2014-12-04 17:31:58

+0

我會嘗試正確的方式,並讓你知道 – 2014-12-04 17:32:48

回答

1

您可以使用coalesce功能:

SELECT kids.*, COALESCE(SUM(point), 0) as `point_sum` 
FROM kids 
    LEFT JOIN tasks 
    ON kids.id = tasks.kid_id 
WHERE kids.user_id = IN_user_id 
GROUP BY kids.name; 
1

您真正需要的是IFNULL()

SELECT kids.*, IFNULL(SUM(point), 0) AS point_sum 

那轉換NULL所提供的值,在這種情況下0