当前位置: 首页 >数据库 > mysql 使用group by之后返回的总条数问题

mysql 使用group by之后返回的总条数问题

标签一共有三级。

原本产品只与三级标签关联。

这样的话根据一级标签就搜索不到产品。

因为客户要求点击一级标签或二级标签要能搜出三级标签的产品,所以后台做了处理,把产品与一级二级标签都进行了关联,所以导致产品与标签不是一对一的关系,变成一对多的关系,所以用左连接查询会有产品重复的情况。

所以在查询的时候用了mysql的group by,查询的时候根据产品id来分组。
用了group by之后解决了重复的问题,但是新的问题又出现了,查询出来的总条数有问题。
mysql 使用group by之后返回的总条数问题 _ JavaClub全栈架构师技术笔记
mysql 使用group by之后返回的总条数问题 _ JavaClub全栈架构师技术笔记
解决方法是拿出分组之后的所有数据,用php的count() 函数算出总条数。但是这样的方法性能比较差。因为每次都会拿出数据库一张表所有的数据。
下面是接口代码

public function listProducts(Request $request) {$result = DB::table('product_labels')->select(['product_labels.id as id','products_product_id.id as product_id','products_product_id.name as name','products_product_id.image as image','products_product_id.price as price','products_product_id.cer_year as cer_year','product_labels.label_id as label_id',]);$result = $result->leftJoin('products as products_product_id', 'products_product_id.id', '=', 'product_labels.product_id');$result = $result->groupBy('product_id');		//取出所有分组之后的数据$count = count($result->get());		$result = $result->offset($request->input('offset'))->limit($request->input('length'))->get();$result = ['data' => $result,'total' => $count];retu $this->success($result);}

作者:caiJava
来源链接:https://www.cnblogs.com/lastingjava/p/11093399.html

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

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





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

标签:group by
分享给朋友:

“mysql 使用group by之后返回的总条数问题” 的相关文章

MySQL数据库(基础) 2022年05月16日 21:54:19
数据库之事务及事务的 ACID 性质 2022年05月21日 11:37:16
mysql数据查询——复杂查询 2022年06月09日 23:08:26
MySQL 查询结果替换 2022年06月15日 10:48:11
mysql 去重查询 2022年06月15日 10:54:01
mysql中的json查询 2022年06月16日 22:34:46
mysql 查询大于多少天的数据 2022年06月22日 12:28:57