You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中Distinct去重查询并按记录出现频次降序排序的实现

实现方案

假设你存储案件的数据表名为 cases,诉讼编号对应的字段名为 case_no,以下分别提供查询构造器和Eloquent两种实现方式:

1. 查询构造器实现

仅返回去重后的诉讼编号和对应出现频次,按频次倒序排列:

use Illuminate\Support\Facades\DB;

$uniqueCases = DB::table('cases')
    ->select('case_no', DB::raw('COUNT(*) as occurrence_times'))
    ->groupBy('case_no')
    ->orderBy('occurrence_times', 'desc')
    ->get();

2. Eloquent模型实现

假设对应模型为 App\Models\Case:

use App\Models\Case;

$uniqueCases = Case::select('case_no', DB::raw('COUNT(*) as occurrence_times'))
    ->groupBy('case_no')
    ->orderBy('occurrence_times', 'desc')
    ->get();

额外说明

如果你需要同时获取每个诉讼编号对应的其他案件字段,且数据库开启了ONLY_FULL_GROUP_BY校验,可以使用以下写法(示例取每个诉讼编号最新的一条完整记录):

$uniqueCases = Case::fromRaw('(SELECT * FROM cases ORDER BY created_at DESC) as latest_cases')
    ->groupBy('case_no')
    ->orderByRaw('COUNT(*) DESC')
    ->get();

返回结果中所有诉讼编号唯一,且完全按照出现频次从高到低排序,匹配你给出的示例需求。

内容的提问来源于stack exchange,提问作者Korlahwarleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:42:00