几乎完美的代码...但是由于每个用户出于历史记录目的都有多个登录条目,因此它正在从action_logs表中获取重复的内容。
我已经测试了很多选项,但是在网络上却没有可行的例子。
select `users`.* from `users` left join `action_logs` on `action_logs`.`user_id` = `users`.`id` and `action_logs`.`type` = 'login' order by `action_logs`.`created_at` desc, `id` desc
预期结果将是按登录日期排序的完整用户列表。
该sql是Laravel代码的结果:
if($value == 'last_login') {
return $this->builder->select('users.*')
->leftJoin('action_logs', function ($join) {
$join->on('action_logs.user_id', '=', 'users.id')
->where('action_logs.type', '=', 'login');
})->orderBy('action_logs.created_at', $this->request->get('sort'))
->orderBy('id', $this->request->get('sort'));
}
答案 0 :(得分:0)
您应该使用DISTINCT查询,但是为了删除重复的结果,您应该在选择项中删除“ created_at”,因为每个登录名都是在不同的时间创建的。