在一个SQL查询中更新多行的多个列

时间:2013-08-06 22:02:39

标签: mysql sql database database-design

我正在尝试在一个查询中为多行设置多个列,但到目前为止还没有运气。

这是我的表格的样子

表:用户

enter image description here

我想在user_id IN(3,4,5)上设置'ext_id',并且还想在相同的行上设置ext_flag = Y和admin_role = admin。

结果表如下所示 enter image description here

我的查询看起来像这样,但由于对SQL语法不熟悉,我得到了错误。

update user
set ext_flag = 'Y', admin_role = 'admin', ext_id = 
case 
when user_id = 2 then 345
when user_id = 4 then 456
when user_id = 5 then 789
end

我在使用多列的SET语法时遇到了困难。

2 个答案:

答案 0 :(得分:29)

试试这个

 update user
 set ext_flag = 'Y', admin_role = 'admin', ext_id = 
 case 
 when user_id = 2 then 345
 when user_id = 4 then 456
 when user_id = 5 then 789
 end
 **WHERE user_id  in (2,4,5)**

答案 1 :(得分:8)

你也可以破解插入操作:

INSERT INTO mytable (id, a, b, c)
VALUES (1, 'a1', 'b1', 'c1'),
(2, 'a2', 'b2', 'c2'),
(3, 'a3', 'b3', 'c3'),
(4, 'a4', 'b4', 'c4'),
(5, 'a5', 'b5', 'c5'),
(6, 'a6', 'b6', 'c6')
ON DUPLICATE KEY UPDATE id=VALUES(id),
a=VALUES(a),
b=VALUES(b),
c=VALUES(c)