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

时间:2013-05-13 23:00:09

标签: mysql

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

enter image description here

3 个答案:

答案 0 :(得分:1)

您忘记了IFNULL()函数

的第二个参数
SELECT IFNULL(MAX(IMPORTE), 0) FROM PUJAS GROUP BY ID_ARTICULO

答案 1 :(得分:1)

您可以使用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

如果每个MAX(Importe)没有具有空值的Importe,则返回ID_ARTICULO。否则它将返回0.请参阅小提琴here

答案 2 :(得分:0)

添加另一个ifnull:

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