1

当字段为空时,我正在尝试返回值 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;

询问

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

在此处输入图像描述

4

3 回答 3

1

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

SELECT IFNULL(MAX(IMPORTE), 0) FROM PUJAS GROUP BY ID_ARTICULO
于 2013-05-13T23:03:21.410 回答
1

您可以使用 COALESCE ():

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

这将从其参数返回第一个非空值。如果 MAX 为空,它将返回 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。请在此处查看小提琴。

于 2013-05-13T23:09:32.630 回答
0

添加另一个 ifnull:

SELECT IFNULL(MAX(IFNULL(IMPORTE, 0)), 0) FROM PUJAS GROUP BY ID_ARTICULO
于 2013-05-13T23:06:18.713 回答