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

Pan*_*dge 19 mysql sql database database-design

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

这是我的桌子的样子

表:用户

在此输入图像描述

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

结果表如下所示 在此输入图像描述

我的查询看起来像这样,但由于对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
Run Code Online (Sandbox Code Playgroud)

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

ech*_*_Me 31

试试这个

 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)**
Run Code Online (Sandbox Code Playgroud)


cam*_*ghi 9

你也可以破解插入操作:

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)
Run Code Online (Sandbox Code Playgroud)