您现在的位置是:网站首页> php专栏 常见问题

tp5分组查询取最新的一条记录

亦然2019-10-22 16:30:16常见问题人已围观

简介php根据字段对数据分组,只取分组的第一条数据。

一:前言

一个订单状态表里有多条重复订单的数据,需要实现取每个订单最新状态的那一条数据。解决方案是使用buildsql构建子查询并排序,再通过group by对子查询结果集进行分组。

最后生成的sql是:

SELECT * FROM ( SELECT * FROM `tp_order_sale` WHERE  `order_id` = 2315 ORDER BY id desc )a GROUP BY order_id

二:代码

$lock = Model('order_sale');
$order_id = "2315";	 
$subQuery = $lock->table('tp_order_sale')
                ->where('order_id',$order_id)
		->order('id desc')
		->buildSql();
$res = $lock->table($subQuery.'a')->group('order_id')->select();
//对象转数组
$res = collection($res)->toArray();
dump($res);
这里以某一个订单为例测试。效果:


很赞哦!()

亦然

亦然(共32篇文章)

愿你我既可以朝九晚五,也可以浪迹天涯;愿你我既可以拈花把酒,也能围炉诗书茶。