繁体   English   中英

为什么当null时mysql查询不返回0

[英]Why mysql query doesn't return 0 when is null

我正在尝试当字段为null时返回值0。 例如,如果存在一个id_articulo且importe为null,则查询将返回0。

CREATE TABLE `PUJAS` (
  `ID_PUJA` int(11) NOT NULL AUTO_INCREMENT,
  `ID_ARTICULO` int(11) DEFAULT NULL,
  `ID_USUARIO` int(11) DEFAULT NULL,
  `TIEMPO` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `IMPORTE` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID_PUJA`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAU

LT CHARSET=latin1;

QUERY

SELECT IFNULL(MAX(IMPORTE),0) FROM PUJAS GROUP BY ID_ARTICULO

在此处输入图片说明

您忘记了IFNULL()函数的第二个参数

SELECT IFNULL(MAX(IMPORTE), 0) FROM PUJAS GROUP BY ID_ARTICULO

您可以使用COALESCE():

SELECT COALESCE (MAX (Importe), 0)
FROM
  ...

它将从其参数返回第一个非null值。 如果MAX为null,则将返回0。

编辑

也许您正在寻找:

SELECT
  CASE WHEN SUM(IMPORTE IS NULL)=0 THEN MAX(IMPORTE) ELSE 0 END
FROM
  PUJAS
GROUP BY
  ID_ARTICULO

如果每个ID_ARTICULO的值ID_ARTICULO为空,则将返回MAX(Importe) 否则它将返回0。请在此处查看小提琴。

添加另一个ifnull:

SELECT IFNULL(MAX(IFNULL(IMPORTE, 0)), 0) FROM PUJAS GROUP BY ID_ARTICULO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM