我的SQL要求用户以前成功登录过一次,如何修改以删除该要求?

我的SQL要求用户以前成功登录过一次,如何修改以删除该要求?,sql,mysql,Sql,Mysql,这是我的SQL 'SELECT u.`id`, u.`email`, u.`password`, u.`first_name`, u.`last_name`, u.`role_id`, MAX( ul.`datetime` ) as `last_login`, SUM( ul.`f

这是我的SQL

'SELECT u.`id`, 
               u.`email`, 
               u.`password`, 
               u.`first_name`, 
               u.`last_name`,
               u.`role_id`,
               MAX( ul.`datetime` ) as `last_login`,
               SUM( ul.`failed` ) as `failed_logins`
        FROM `users` `u`
        JOIN ( SELECT `user_id`, `datetime`, `failed`
               FROM `user_logins`
               ORDER BY `datetime` DESC
               LIMIT ' . (int) $failedLoginThreshold . ' ) `ul`
          ON ( u.`id` = ul.`user_id` )
        WHERE u.`email` = ' . Database::instance()->escape($email) . '
            AND u.`role_id` > 0
        GROUP BY u.`id`'
使用收集到的信息,我可以决定是否让用户登录,如果用户多次尝试错误登录,我会将其视为密码错误,或者将其锁定

我刚刚注意到,当我删除表时,没有一个登录成功,因为子查询将返回0行

SQL总是让我着迷。如何更改此查询,以便在用户以前从未登录的情况下允许他们登录

当然,我可以为每个用户输入一个伪造的行,但对我来说,这听起来太粗糙了(而且容易被破坏)


谢谢你的阅读

将您的
加入
变成
左加入
JOIN
默认为
internaljoin
,除非能够在另一个表中进行匹配,否则不会返回记录。切换到
LEFT JOIN
会告诉MySQL从“LEFT”表(即您的
users
表)返回记录,即使“right”表(您的
users\u logins
表)中没有匹配的记录。

谢谢!)我现在来测试一下。