当前位置: 首页 >数据库 > 识破laravel+groupBy+count中那些隐藏着的秘密

识破laravel+groupBy+count中那些隐藏着的秘密

谈一谈那些隐藏着的秘密吧!!!
laravel框架中写统计用户的领取数量,打算用 groupBy + count来实现(去重+统计),加了groupBy之后再count,统计出来不的数量不对。查询资料+反复测试终于得到了解决方案。

错误的查询语句 ❌

Model::whereIn('course_id',$course_ids)->groupBy('uid')->count();

  


通过groupBy分组后,再执行Count()函数返回的是:分组后数据,第一个分组的数量。

正确的查询语句 ✔️

Model::whereIn('course_id',$course_ids)->groupBy('uid')->get()->count();// 或Model::whereIn('course_id',$course_ids)->count(DB::raw('DISTINCT(uid)')));// 或conut(Model::whereIn('course_id',$course_ids)->groupBy('uid')->pluck('uid')->toArray());

  


distinct关键字
MySQL查询的默认显示为所有行,包括重复的行。

SELECT子句中的MySQL DISTINCT关键字用于消除重复的行并显示唯一的值列表。

那DISTINCT 和GROUP BY哪个效率更高?
DISTINCT操作只需要找出所有不同的值就可以了。而GROUP BY操作还要为其他聚集函数进行准备工作。从这一点上将,GROUP BY操作做的工作应该比DISTINCT所做的工作要多一些。

但实际上,GROUP BY 效率会更高点,为什么呢?对于DISTINCT操作,它会读取了所有记录,而GROUP BY需要读取的记录数量与分组的组数量一样多,也就是说比实际存在的记录数目要少很多。

结束语
今天的分享就到这里,相信大家看完一定会收获。

愿那些被隐藏着的秘密都被挖掘出来,共勉!
————————————————
版权声明:本文为CSDN博主「WXiangQian王先森」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq175023117/article/details/105240627/

作者:dreamboycx
来源链接:https://www.cnblogs.com/dreamboycx/p/15176359.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/118567.html

标签:group by
分享给朋友:

“识破laravel+groupBy+count中那些隐藏着的秘密” 的相关文章