mysql - Leftjoin with groupby 跳过 groupby
问题描述
我有一些用户,我想通过左加入锻炼表来计算用户,并为每个用户获取一行。因此,仅在锻炼表中出现过一次或更多但我只需要每个 user_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 移到连接闭包之外。
$users->leftJoin('workout', function ($join) {
$join->on('user.id', '=', 'workout.user_id')
->where('workout.user_id', '>', 1);
})
->groupBy('workout.user_id')
推荐阅读
- css - 引导行 100% 宽度,没有水平滚动和自适应每个尺寸
- android - Flutter NetworkImage 处理 403 错误
- angular - 在工作区库中使用 Angular 环境变量
- oracle - Oracle商务云加载Backbone和下划线JS
- laravel - 搜索功能在搜索结果页面 Laravel 上不起作用
- python - 不知道发布搜索按钮的 btnSearch.x 和 btnSearch.y 值
- date - 如何在 ssrs 上将默认参数设置为 7 天前的不同日期格式
- python - 'float' 对象不可调用,在一种情况下,但在另一种情况下有效
- swift - 从平仓确定真实指数
- regex - 正则表达式:使用 AWK gsub 的 PATTERN 异常