mysql--select count(*) +group返回为null

## 查询数量不带group
select count(*) from t_mprice 
inner join t_user on t_mprice.UserId = t_user.id 
inner join t_company  on t_user.id=t_company.UId  
where to_days(t_user.VipEndDate)>=to_days('2018-03-01')
##这个sql查询结果为0  没问题

1.png

##查询计数带有group
select count(*) from t_mprice 
inner join t_user on t_mprice.UserId = t_user.id 
inner join t_company  on t_user.id=t_company.UId  
where to_days(t_user.VipEndDate)>=to_days('2018-03-01') 
group by t_mprice.UserId 
## 查询结果=null

360截图1684100484116137.png


问题:通过Db.queryLong(sql) 查询的时候,如果用第二个sql查询就会报空指针错误,跟波总反馈一下, 看看针对这种情况,需不需要在jfinal的queryLong中做一下判断。仅是个人建议,如果有更好的解决方案,麻烦波总给与指导。

补充:

在俱乐部群里讨论结果,sql改成这样也可以避免这个问题:

 select count(*) from (
select t_mprice.UserId 
from t_mprice 
inner join t_user on t_mprice.UserId = t_user.id 
inner join t_company  on t_user.id=t_company.UId  
where to_days(t_user.VipEndDate)>=to_days('2018-03-01') 
group by t_mprice.UserId )t

这样会不会在sql编写以及执行上更麻烦了


评论区

JFinal

2018-03-01 14:17

Long result = Db.queryLong(sql) 就不会报空指针,注意不要用 long 接收值,而要用 Long

热门反馈

扫码入社