php查询数据分组 MySQL 分组查询

Thinkphp数据查询group分组如何取每组的最新记录

本人用ThinkPHP3.2,今天正在开发一个需要分组显示的功能,可是从数据库中把相应数据读取后直接用group分组,结果每组显示的是最老的记录,我的需求是要显示每组的最新记录。在网上大搜一翻后,未果,本人决定自行研究,现将方法记录于此以防遗忘。

创新互联主要从事网站设计制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务资溪,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

其实很简单,以供就两步:

第一步:

将符合条件的数据全部取出,暂不用group分组,作为子查询:

[php] view plain copy

$subQuery = $model-field('id,name')-table('tablename')-where($where)-order('time desc')-select(false);

第二部:

利用子查询进行查询分组

[php] view plain copy

$model-table($subQuery.' a')-group('field')-select();span style="font-family: Arial, Helvetica, sans-serif;" /span

好了,思路就是这样。希望对大家有帮助!

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

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

例如本次需求是要按照cid进行分组,按照通常的做法是 SELECT * FROM 表名 GROUP BY cid,这样就能按照cid进行分组筛选!然后使用THINKPHP的时候则使用 M('表名')-group('cid')-select(); 实际生成的语句和原始SQL代码是一样的。

thinkphp 多表分组查询该怎么弄?

有点不太明白你的意思,不过thinkphp的查询可以使用这种方法,你上面有两个表,假设用户表就叫做user,文章表叫做paper,那你就可以这样:$dao=M("user"); $rs=$dao-table('user as u,paper as p')-field('u.xxxx,p.xxxx')-select();

其中field()方法是你要查找的字段,如果在你两张表没有字段名是重复的情况下,你也是可以不用这个方法的。这样就把你要查找的资料存放到一个组数$rs里面了


名称栏目:php查询数据分组 MySQL 分组查询
URL标题:http://csdahua.cn/article/hjeohe.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流