THINKPHP中怎么对数据进行分组查询?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了THINKPHP中怎么对数据进行分组查询?相关的知识,希望对你有一定的参考价值。

分组查询原理都是SQL的分组查询,THINKphp中只是用到他自己的一些自定义的方法!比如 join()、group()、having()方法等,实际对应的也是SQL里的这些关键字!

例如本次需求是要按照cid进行分组,按照通常的做法是 SELECT * FROM 表名 GROUP BY cid,这样就能按照cid进行分组筛选!然后使用THINKPHP的时候则使用 M('表名')->group('cid')->select(); 实际生成的语句和原始SQL代码是一样的。
参考技术A 你的分组查询是什么意思?是指这个吗?
分组查询主要是指Group By字句将行划分成较小的组,然后使用聚合函数返回每一组的汇总信息。分组查询一般是用来满足统计需求的。追问

额。用的group 只能 取到 第一条数据。

追答

也许你的表述有问题,说说你要的效果吧?

追问

不用了。 我已经用别的方法解决了。谢谢。

追答

OK!

本回答被提问者采纳

关于thinkphp5中数据库分组查询group

在使用tp5的group进行分组查询总是报错,以主键进行分组是不报错,但没有任何意义

与聚合函数一起使用的不会报错,如官方文档给出的代码

Db::table(‘think_user‘)
    ->field(‘user_id,username,max(score)‘)
    ->group(‘user_id‘)
    ->select();

但是和我的需求不一样,我需要根据某一列分组将指定字段链接起来

这是我用的原生查询,原生查询字段不需要加单引号

Db::query("select at_id,group_concat(tags_name) from blog_tags group by at_id");

这是可以获得我想要的结果,组合成的数据是用逗号连接的

技术图片

 

以上是关于THINKPHP中怎么对数据进行分组查询?的主要内容,如果未能解决你的问题,请参考以下文章

三、MySQL数据库之分组排序

SQL对查询结果进行分组

【MySQL】分组查询(GROUP BY)

SQL查询语句.GroupBy分组

sql子查询可以再分组吗

对查询结果分组