我有一些用户,我想计算左加入表的锻炼和得到一行为每个用户。所以那些只在训练表中出现过一次或更多但我只需要每个用户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/