我有一些用户,我想计算左加入表的锻炼和得到一行为每个用户。所以那些只在训练表中出现过一次或更多但我只需要每个用户id一行的用户。
这可以通过在原始sql查询中使用in来工作,但尝试在laravel中格式化它不会:

$users->leftJoin('workout', function($join){
  $join->on('user.id', '=', 'workout.user_id')
  ->where('workout.user_id', '>', 1)
  ->groupBy('workout.user_id');
})

这是一个用作原始查询的查询:
select * from `users`
left join (select workout.user_id, workout.id_holofit from workout where workout.user_id > 1  group by workout.user_id) workout ON workout.user_id = users.id

最佳答案

将groupby移到join闭包之外。

$users->leftJoin('workout', function ($join) {
    $join->on('user.id', '=', 'workout.user_id')
    ->where('workout.user_id', '>', 1);
})
->groupBy('workout.user_id')

关于mysql - 左加入分组依据跳过分组依据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56804066/

10-11 02:54