首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL -在一个查询中使用不同的值更新多行

MySQL -在一个查询中使用不同的值更新多行
EN

Stack Overflow用户
提问于 2014-09-05 04:48:22
回答 5查看 376K关注 0票数 190

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

例如,3次更新为1个查询:

代码语言:javascript
复制
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了一个例子,但我真的不知道如何进行查询。即:

代码语言:javascript
复制
UPDATE table_to_update
SET cod_user= IF(cod_office = '17389551','622057','2913659','6160230')
    ,date = IF(cod_office = '17389551','12082014')
WHERE ?? IN (??) ;

如果WHERE和if condition..any概念中有多个条件,我不完全清楚如何进行查询?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-05 04:53:56

你可以这样做:

代码语言:javascript
复制
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';

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

票数 259
EN

Stack Overflow用户

发布于 2014-09-05 04:54:58

您可以使用CASE语句来处理多个if/then方案:

代码语言:javascript
复制
UPDATE table_to_update 
SET  cod_user= CASE WHEN user_rol = 'student' THEN '622057'
                   WHEN user_rol = 'assistant' THEN '2913659'
                   WHEN user_rol = 'admin' THEN '6160230'
               END
    ,date = '12082014'
WHERE user_rol IN ('student','assistant','admin')
  AND cod_office = '17389551';
票数 16
EN

Stack Overflow用户

发布于 2016-12-11 15:43:57

代码语言:javascript
复制
update table_name
set cod_user = 
    CASE 
    WHEN user_rol = 'student' THEN '622057'
    WHEN user_rol = 'assistant' THEN '2913659'
    WHEN user_rol = 'admin' THEN '6160230'?
    END,date = '12082014'

WHERE user_rol IN ('student','assistant','admin')
AND cod_office = '17389551';
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25674737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档