此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