COUNT函数的0值和NULL值

今天写sql发生了空指针异常,后来查询发现自己在group by结果里进行了统计导致错误 在这里说下产生原因 这个原因是sql的解析树决定的,count发生在select是在group by 之后执行的由于group by产生的临时表不存在所以统计出的结果是null 而不是 0;因为null在内存里没有索引是没有办法被搜索到的。

举个最简单的栗子:

SELECT
	count(*)
FROM
	auth_user_role aur
INNER JOIN auth_role ar ON aur.role_uid = ar.id
WHERE
	aur.user_id = 66666
AND role_name != '查询'
GROUP BY
	ar.id

在不匹配的情况下这个的结果就是null 而且需要注意一点,在该种情况下无法使用 IFNULL(COUNT(*),0)函数;

而下面的是0

SELECT
count(*)
FROM
	auth_user_role aur
INNER JOIN auth_role ar ON aur.role_uid = ar.id
WHERE
	aur.user_id = 66666
AND role_name != '查询'

转载于:https://my.oschina.net/fusublog/blog/1838804

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值