首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么mysql查询在为null时不返回0

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

Stack Overflow用户
提问于 2013-05-14 07:00:09
回答 3查看 308关注 0票数 1

当field为空时,我尝试返回值0。例如,如果存在一个导入空值的id_articulo,则查询将返回0。

表格

代码语言:javascript
复制
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;

查询

代码语言:javascript
复制
SELECT IFNULL(MAX(IMPORTE),0) FROM PUJAS GROUP BY ID_ARTICULO

EN

回答 3

Stack Overflow用户

发布于 2013-05-14 07:03:21

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

代码语言:javascript
复制
SELECT IFNULL(MAX(IMPORTE), 0) FROM PUJAS GROUP BY ID_ARTICULO
票数 1
EN

Stack Overflow用户

发布于 2013-05-14 07:09:33

您可以使用COALESCE ():

代码语言:javascript
复制
SELECT COALESCE (MAX (Importe), 0)
FROM
  ...

它将从其参数中返回第一个非空值。如果MAX为null,则返回0。

编辑

也许你正在寻找这个:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2013-05-14 07:06:19

添加另一个ifnull:

代码语言:javascript
复制
SELECT IFNULL(MAX(IFNULL(IMPORTE, 0)), 0) FROM PUJAS GROUP BY ID_ARTICULO
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16532538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档