当查询结果为空时,如何强制MySQL查询返回0?

时间:2019-05-22 18:10:00

标签: mysql sql

我有以下查询:

SELECT 
SUM(quantity) AS qt
FROM 
stockMove
WHERE
date_mov >= '2019-04-01'
AND
date_mov <= '2019-04-30'
AND
ProductCode = '000807'
GROUP BY 
ProductCode 

如果在此日期范围内该产品没有动静,查询将不返回任何内容,但我需要返回0。

我已经尝试过

  

SELECT SUM(quantity)AS qt,COALESCE(quantity,0)

  

SELECT SUM(quantity)AS qt,IFNULL(quantity,0)

但是查询仍然返回0行。

是否可以解决我的问题?

谢谢大家。

2 个答案:

答案 0 :(得分:0)

使用如下-

SELECT COALESCE(SUM(quantity),0) AS qt

答案 1 :(得分:0)

以您为例,只需移除GROUP BY并使用COALESCE()

SELECT COALESCE(SUM(quantity), 0) AS qt
FROM stockMove
WHERE date_mov >= '2019-04-01' AND date_mov <= '2019-04-30' AND
      ProductCode = '000807';

没有GROUP BY的聚合查询总是返回一行,即使没有行匹配也是如此。返回的值为NULL-COALESCE()的输入来源。

使用GROUP BY,查询根本不返回任何行。无法将任何内容转换为0