MySQL加入和限制到1

时间:2019-01-17 00:32:23

标签: php mysql laravel

几乎完美的代码...但是由于每个用户出于历史记录目的都有多个登录条目,因此它正在从action_logs表中获取重复的内容。

我已经测试了很多选项,但是在网络上却没有可行的例子。

sequelpro with current result


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代码的结果:

laravel code

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'));
        }

1 个答案:

答案 0 :(得分:0)

您应该使用DISTINCT查询,但是为了删除重复的结果,您应该在选择项中删除“ created_at”,因为每个登录名都是在不同的时间创建的。