mysql ifnull 函数的使用方法
我有一个t_type表.里面有一个val列.现在想按type类型查询.如果没有记录的话,返回0.下面是我自己写的sql,但是返回的结果还是null怎么不是0呢?selec...
我有一个t_type表.里面有一个val列.现在想按type类型查询.如果没有记录的话,返回0.下面是我自己写的sql,但是返回的结果还是null怎么不是0呢?
select IFNULL(val,0) AS num from t_type where type = '1';
我的这个表是一个空表.返回null是不是因为我的结果集是0条,所以才为null的? 展开
select IFNULL(val,0) AS num from t_type where type = '1';
我的这个表是一个空表.返回null是不是因为我的结果集是0条,所以才为null的? 展开
展开全部
你可以这样理解,mysql的执行顺序是from->where->select
经过where过滤之后才select来显示相应字段,如果where过滤完之后都没记录了,那select也就为null。(要想val为null就返回为0,除val字段外其余字段必须有一个不为null)
如果空表你也要返回0,可以在外面多嵌套一层
select ifnull(m.num,0) as num from (select IFNULL(val,0) AS num from t_type where type = '1')m
经过where过滤之后才select来显示相应字段,如果where过滤完之后都没记录了,那select也就为null。(要想val为null就返回为0,除val字段外其余字段必须有一个不为null)
如果空表你也要返回0,可以在外面多嵌套一层
select ifnull(m.num,0) as num from (select IFNULL(val,0) AS num from t_type where type = '1')m
追问
SELECT IF(m.c>0,(SELECT val FROM t_type WHERE type = '1' AND is_delete = '0' ORDER BY val DESC LIMIT 0,1 ),0) AS n FROM (SELECT COUNT(*) AS c FROM t_type) as m;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询