MySQL SUM返回没有行应该返回0

时间:2016-11-25 10:08:34

标签: mysql sum

此product_id没有行。结果不返回任何行而不是SUM = 0.

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

有没有办法让结果= 0?

2 个答案:

答案 0 :(得分:1)

product_id = 6706434中没有store2product的记录。在按product_id分组时,您会在此查询中找到每个product_id一个结果行。由于找不到product_id,因此不会返回任何行。

简单解决方案:删除GROUP BY

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

现在你得到一个结果行。

答案 1 :(得分: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