我有一张这样的表:
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
还是我应该使用申请方?
答案 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