此product_id沒有行。結果不返回行而不是SUM = 0.MySQL SUM返回沒有行應返回0
SELECT COALESCE(SUM(amount), 0) FROM store2product WHERE product_id = 6706434 GROUP BY product_id;
有沒有辦法得到結果= 0?
此product_id沒有行。結果不返回行而不是SUM = 0.MySQL SUM返回沒有行應返回0
SELECT COALESCE(SUM(amount), 0) FROM store2product WHERE product_id = 6706434 GROUP BY product_id;
有沒有辦法得到結果= 0?
store2product
中沒有product_id = 6706434
的記錄。當您按product_id
進行分組時,您會收到一個結果行,每product_id
通過此查詢找到。由於未找到product_id
,因此不會返回任何行。
簡單的解決方案:刪除GROUP BY
。
SELECT
COALESCE(SUM(amount), 0)
FROM store2product
WHERE product_id = 6706434;
現在你在任何情況下都會得到一個結果行。
完美的作品 – tttpapi
試試這一招..
模式對你的情況
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
表是'絕對amount'數字字段?如果'SUM'返回NULL,'COALESCE'只會返回零,這可能不是。 – BrynJ
amount is SMALLINT NOT NULL – tttpapi
顯然,如果沒有與您的WHERE子句相匹配的記錄,則不會在結果集中獲得記錄。你需要一些JOIN或子查詢。 – CBroe