[英]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.