mysql - 在 MySQL 的一个查询中更新具有不同值的多行

标签 mysql sql sql-update

我试图了解如何更新具有不同值的多行,但我只是不明白。解决方案无处不在,但对我来说似乎很难理解。

例如,1 个查询中的三个更新:

UPDATE table_users
SET cod_user = '622057'
    , date = '12082014'
WHERE user_rol = 'student'
    AND cod_office = '17389551'; 

UPDATE table_users
SET cod_user = '2913659'
    , date = '12082014'
WHERE user_rol = 'assistant'
    AND cod_office = '17389551'; 

UPDATE table_users
SET cod_user = '6160230'
    , date = '12082014'
WHERE user_rol = 'admin'
    AND cod_office = '17389551'; 

read一个例子,但我真的不明白如何进行查询。即:

UPDATE table_to_update
SET cod_user= IF(cod_office = '17389551','622057','2913659','6160230')
    ,date = IF(cod_office = '17389551','12082014')
WHERE ?? IN (??) ;

如果 WHERE 和 IF 条件中有多个条件,我不完全清楚如何进行查询..有什么想法吗?

最佳答案

你可以这样做:

UPDATE table_users
    SET cod_user = (case when user_role = 'student' then '622057'
                         when user_role = 'assistant' then '2913659'
                         when user_role = 'admin' then '6160230'
                    end),
        date = '12082014'
    WHERE user_role in ('student', 'assistant', 'admin') AND
          cod_office = '17389551';

我不明白你的日期格式。日期应使用本地日期和时间类型存储在数据库中。

关于mysql - 在 MySQL 的一个查询中更新具有不同值的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25674737/

相关文章:

MySql 使用唯一键约束递增单元格值

mysql - 存储过程多次循环只获取第一个循环数据

mysql - 二维数组的表模式

mysql - 解释此查询中的 Max

sql - 从 SQL Server 2005 查询 Active Directory

mysql - 我想用空格而不是表中的连字符替换列值

mysql - 仅当存在外键时才删除它

php - 在 php/sql 中选择不同的列,然后选择相关的列

mysql - 按非结构化表中的一个值过滤但按另一个值排序

java - [Microsoft][ODBC Microsoft Access 驱动程序] 查询表达式中存在语法错误(缺少运算符)