laravel中distinct()的使用方法与去重,MySQL通常使用GROUPBY(本质上是排序动作)完成DISTINCT操作,如果DISTINCT操作和ORDERBY操作组合使用,通常会用到临时表.这样会影响性能. 在一些情况下,MySQL可以使用索引优化DISTINCT操作,但需要活学活用。
1 |
$users=DB::table('users')->select('name')->distinct()->get(); |
如果想要distinct多个字段,可以在select中添加字段名称;但是要注意,当select多个字段,代表需要status与name都相同的才会被排除
1 |
$users=DB::table('users')->select('status','name')->distinct()->get(); |
如果你想要从数据库中去重获取数据,可以使用GROUPBY方法
1 |
FacebookRule::with('ruleContent')->orderBy($field, 'desc')->groupBy('name','budget_operator','budget','level','action','site_type')->paginate(); |
groupBy 分组字句及 having havingRaw 条件子句
1 2 |
DB::table('table_name')->select('goods_id')->groupBy('brand_id')->having('price','>','100')->get(); DB::table('table_name')->select('brand_id')->groupBy('brand_id')->havingRaw('sum(price)','>','10000'); |