laravel利用subquery使左连接查询右表数据唯一查询

时间:2024-01-10 10:10:26

如:表a,连接表b,b中有多条符合查询的记录

1、建立需要的子查询

  $sub = DB::table('b')->select(['aid'])->selectRaw('max(id) as id')->grouBy('id');

2、建立连接查询

  $_list = DB::table('a')->leftJoin(DB::raw('({$sub->toSql()}) as b),'a.id','=','b.aid)->get()

这样就可以使得左连接查询中右表记录只查询一条,避免左表记录重复出现。这里在只是筛选右表中第一条,其它条件暂时还没有实现。

开发中遇到的问题,先记录一下,防止以后再次出现。