为什么mysql查询在返回null时不返回0
问题描述:
我试图在字段为空时返回0值。例如,如果有一个id_articulo与importe空,查询将返回0为什么mysql查询在返回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(IFNULL(IMPORTE, 0)), 0) FROM PUJAS GROUP BY ID_ARTICULO
答
你可以使用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
这将返回MAX(Importe)
如果没有Importe每个ID_ARTICULO
有一个空值。否则它将返回0.请参阅小提琴here。
粘贴实际的SQL代码会比屏幕截图好很多。 – tadman 2013-05-14 00:05:42