当field为空时,我尝试返回值0。例如,如果存在一个导入空值的id_articulo,则查询将返回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;查询
SELECT IFNULL(MAX(IMPORTE),0) FROM PUJAS GROUP BY ID_ARTICULO

发布于 2013-05-14 07:03:21
您忘记了IFNULL()函数的第二个参数
SELECT IFNULL(MAX(IMPORTE), 0) FROM PUJAS GROUP BY ID_ARTICULO发布于 2013-05-14 07:09:33
您可以使用COALESCE ():
SELECT COALESCE (MAX (Importe), 0)
FROM
...它将从其参数中返回第一个非空值。如果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没有导入,这将返回MAX(Importe)。否则将返回0。请参阅fiddle here。
发布于 2013-05-14 07:06:19
添加另一个ifnull:
SELECT IFNULL(MAX(IFNULL(IMPORTE, 0)), 0) FROM PUJAS GROUP BY ID_ARTICULOhttps://stackoverflow.com/questions/16532538
复制相似问题