今天碰到一个很奇葩的问题,卡了我很久。用laravel写查询,加了GroupBy之后再count,和原生语句里统计的数量不对。搞了很久,终于知道原因了。
第一:GroupBy之后的Count返回的是分组后的第一组的数量
通过GroupBy分组后,再执行Count()函数返回的是:分组后数据,第一个分组的数量。
第二:使用distinct方法去除特定字段的重复计数,然后统计数量
比如说,在laravel里可以通过查询构造器
DB::(‘test’)->distinct('test.id)->count();
来获取统计数量。
坑爹是,laravel的文档里没有这个,自己搞了很久才搞明白。
distinct和groupby的区别,以及使用方法。
转载于:https://my.oschina.net/shunshun/blog/3064896
原文链接:
https://my.oschina.net/shunshun/blog/3064896
谈一谈那些隐藏着的秘密吧!!!
laravel
框架
中
写统计用户的领取数量,打算用
group
By +
count
来实现(去重+统计),加了
group
By之后再
count
,统计出来不的数量不对。查询资料+反复测试终于得到了解决方案。
错误的查询语句 :cross_mark:
Model::whereIn('course_id',$course_ids)->
group
By('uid')->
count
();
通过
group
By分组后,再执行
Count
()函数返回的是:分组后数据,第一个分组的数量。
正确的查询语句 :check_mark:
Model::whereIn('course_id',$course_ids)->
group
By('
MySQL
--
Group
by分组与
count
计数(进阶)1、
Group
by语法2、创建表格3、题目代码部分4、文末彩蛋
更多关于
数据库
知识请加关注哟~~。若需联系和想安装
MySQL
请加博主:
QQ:3327908431
&nbs...
业务需要做一个待办事件,其
中
主办人是一个,协作人是多个;然后我做了两个表,附表用来存协作人,与主表之间是一对多的关系,列表显示需要全部数据采用了左连接查询。
Left Join 求两个表的交集外加左表剩下的数据。
结果呢,如果协作人是1个的时候没
问题
,当为多个时,就会出现多条重复数据。
一开始直接采用
group
by,这当然可以去重,不过
laravel
中
封装的
count
方法 直接取了结果
中
的第一个数据,也就是5,实际结果我要的是6,如图:
文章转发自专业的
Laravel
开发者社区,原始链接:https://learnku.com/
laravel
/t/29000Eloquent 有一个鲜为人知的函数叫 with
Count
():它可以帮助获取包括远程一对多关系在内的对象关联的记录条数。接下来看示例。在我们的示例小项目
中
,我们有三个模型:User,Post 以及 Comment。所有的关联关系都可以用这三个模型来举例描述,先看 app/...