2016-11-25 34 views
0

此product_id沒有行。結果不返回行而不是SUM = 0.MySQL SUM返回沒有行應返回0

SELECT COALESCE(SUM(amount), 0) FROM store2product WHERE product_id = 6706434 GROUP BY product_id; 

有沒有辦法得到結果= 0?

+0

表是'絕對amount'數字字段?如果'SUM'返回NULL,'COALESCE'只會返回零,這可能不是。 – BrynJ

+0

amount is SMALLINT NOT NULL – tttpapi

+2

顯然,如果沒有與您的WHERE子句相匹配的記錄,則不會在結果集中獲得記錄。你需要一些JOIN或子查詢。 – CBroe

回答

1

store2product中沒有product_id = 6706434的記錄。當您按product_id進行分組時,您會收到一個結果行,每product_id通過此查詢找到。由於未找到product_id,因此不會返回任何行。

簡單的解決方案:刪除GROUP BY

SELECT 
    COALESCE(SUM(amount), 0) 
FROM store2product 
WHERE product_id = 6706434; 

現在你在任何情況下都會得到一個結果行。

+0

完美的作品 – tttpapi

0

試試這一招..

模式對你的情況

CREATE TABLE #TAB (ID INT, AMT DECIMAL(18,2)) 
INSERT INTO #TAB 
SELECT 1,1200 
UNION ALL 
SELECT 1,120 
UNION ALL 
SELECT 3, 100 

現在查詢像

SELECT SUM(ISNULL(AMT,0)) AS AMT FROM (

SELECT ID, SUM(AMT)AMT FROM #TAB WHERE ID =2 GROUP BY ID 
UNION ALL 
SELECT NULL AS ID, NULL AS AMT 

)A