MySQL IFNULL函数不起作用

CtrlCV攻城狮 2018-07-23 02:11:56
SELECT
f.province AS loc,
IFNULL(COUNT(f.province), 0) AS count
FROM
project_name_data d
RIGHT JOIN full_province f ON (
TRIM(
REPLACE (
REPLACE (
SUBSTRING_INDEX(d.location, '|', 1),
'省',
''
),
'壮族',
''
)
) = f.province
)
GROUP BY
loc;

其中project_name_data为数据源所在表, full_province为全国所有省份的结果,现在想统计每个省对应的数据数量,如果不存在则填0,现在SQL运行后显示的只有数据源表中存在的省份,没有full_province - project_name_data这部分,求解
...全文
2783 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AHUA1001 2018-10-12
  • 打赏
  • 举报
回复 1
IFNULL只能判断是否为空,而COUNT,返回的值,肯定是数字,不可能有NULL。
另外,如果没有返回行,IFNULL也不会有作用,需要关联其他表,用LEFT JOIN。
Flashcom 2018-09-30
  • 打赏
  • 举报
回复
3楼正解!!!!
qq_24269967 2018-08-07
  • 打赏
  • 举报
回复 1
首先NULL和空字符串有区别,其次试试把IFNULL(字段名)换成 case when len(字段名)=0 then 0 else 字段名 end
hghua 2018-07-26
  • 打赏
  • 举报
回复
改成left join试试。一般不用right join
AHUA1001 2018-07-26
  • 打赏
  • 举报
回复 1
IFNULL(COUNT(f.province), 0) COUNT(f.province)的值不可能是NULL,只能是一个正整数。所以,IFNULL函数,有没有,都一样。
  • 打赏
  • 举报
回复
你的字符里面是Null还是''空字符串,MySQL 貌似对待这两 不一样
weixin_40579234 2018-07-24
  • 打赏
  • 举报
回复
null和空值是有区别的

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧