我有一个表,我想选择最低/最低价格的产品名称,如下所示:
product_name | price
Cat | 12
Dog | 21
Cat | 14
Dog | 20
Fish | 10
Fish | 3
欲望输出应该是
Cat | 12
Dog | 20
Fish | 3
下面是我的sql查询
$products = DB::table('products')
->orderBy('products.products_price', 'asc')
->groupBy('products.products_name')
->get();
当我使用这个脚本时,它只显示最高/最高价格,而不是最低价格
2条答案
按热度按时间eh57zj3b1#
你需要一个聚合而不是排序。对于laravel,这意味着将列与db::raw一起传入:
编辑id
这里的答案是:sql:group-by-minimum-value在一个字段中,同时选择mysql查询的不同行
现在我们必须将其转换为查询生成器
这还没有经过测试,所以我希望它能起作用
nnsrf1az2#
问题:
您没有定义price属性应聚合到最小值。
解决方案:
如果想要最大价格,则需要选择min()聚合。你可以使用
->selectRaw('MIN(price) as max_price')
.请注意:
如果您还想选择其他属性,只需添加逗号分隔的属性。
->selectRaw('name, MAX(price) as max_price')
@编辑你还用奥德比吗?如果不是,请使用orderby('products.products\u price','asc')