如何根据sql语句中另一个字段的值更新数据字段

31moq8wy  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(292)

下表是我用来管理登录密码的地方。登录表字段:userid、emailaddress、password、loginAttents、lastlogindate、loginstatus
在我的登录逻辑中,

1. If login password matches : 
   1. I update LastLoginDate field with the current date and time
   2. Update LoginAttempts = 0

2. If the EmailAddress (login user name) is correct but PassWord is wrong :
   1. I increment LogginAttempts by 1 
   2. If LoginAttempts > 5 then update LoginStatus = "LOCKED"

3. No need to update anything if EmailAddress is wrong

目前,我通过以下查询读取表:

string Query = @"SELECT *,GROUP_CONCAT(user_role.USER_ROLE_ROLE SEPARATOR ',') AS ROLES " + 
                                        "FROM login " + 
                                        "INNER JOIN user_role ON " +  
                                            "user_role.USER_ROLE_USER_ID = login.LOGIN_USER_ID AND login.LOGIN_EMAIL = @Parameter1";

然后我比较字段以获得正确的密码,并使用以下sql查询更新表:

Query = @"UPDATE login SET " +
                                          "LOGIN_ACCOUNT_STATUS = @Parameter2," +
                                          "LOGIN_LOGIN_ATTEMPTS = @Parameter3," +
                                          "LOGIN_LAST_LOGIN_DATE = @Parameter4," +
                                          "LOGIN_LAST_LOGIN_LOCATION = @Parameter5 " +
                                          "WHERE LOGIN_EMAIL=@Parameter1";

这是在外部实现的(比较sql之外的值),工作正常。但我确信这是可以在sql语句中实现的。有人能帮我实现sql查询吗?如果可能的话,我想看看如何将select和update合并到一个sql字段中,并在sql查询中进行比较。我只是想让代码变得优雅。我的c#函数目前有100行代码,如果全部用sql实现,代码可能会大大减少。
谢谢,pg

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题