如何获取按日期排序的一条记录

时间:2017-06-04 08:50:27

标签: php mysql sql laravel laravel-5.3

我有一张这样的表:

id    product_id   price      date
1       1001        100     2017-05-29
2       1005        101     2017-03-30
3       1001        102     2017-03-30
4       1003        106     2017-06-07
5       1005        106     2017-04-30

我希望按product_id进行分组,并为每个product_id只获取一个最新产品。我还有一个最小和最大价格变量,应该应用于price列。

我的查询结果应为:

1       1001        100     2017-05-29
4       1003        106     2017-06-07
5       1005        106     2017-04-30

可能是SQL还是我应该使用申请方?

2 个答案:

答案 0 :(得分:3)

如果您想按日期订购结果,只需使用orderBy()

Model::orderBy('date_column', 'desc')->whereBetween('price', [$min, $max])->groupBy('product_id')->take(3)->get();

或者它的快捷方式latest()oldest()

Model::latest('date_column')->...

答案 1 :(得分:0)

您可以使用subqueries。首先按日期从表格顺序中选择,然后使用该表格按product_id分组:

SELECT * FROM (SELECT * FROM `your_table` t ORDER by date desc) as date_ordered group by product_id ORDER by id