想要一些帮助。目前,我有一个包含多个记录的表。
列为:id, identifier, price
我想编写一个查询,我只能以最高的价格获得唯一标识符。
我希望收藏是
[
[
'id' => 5,
'identifier' => 1001
'price' => 50
],
[
'id' => 7
'identifier' => 1002,
'price' => 35
]
]
第一个数组id为5,因为在标识符1001中最高价格为50,id为5,第二个数组id为7,因为标识符1002最高价格为35
答案 0 :(得分:3)
$maxPrices = Model::select(DB::raw('max(price)'))
->groupBy('identifier')->get();
查询结果: [50, 35]
Model::select()->whereIn('price',$maxPrices)->orderBy('price', 'desc')->get()
查询结果
[
[
'id' => 5,
'identifier' => 1001
'price' => 50
],
[
'id' => 7
'identifier' => 1002,
'price' => 35
]
]
答案 1 :(得分:0)
使用它来获取具有最高价格的所有唯一标识符(编辑表):
$products = DB::table('tbl_products')->groupBy('identifier')->get(['identifier', DB::raw('MAX(price) as price')]);
答案 2 :(得分:0)
大家好,找到了更好的解决方案。在数据库视图表上读取。该函数将创建一个具有所需值的虚拟表,在laravel中,您可以创建一个模型来引用该虚拟表并对其进行雄辩的查询。