22

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

这是我的桌子的样子

表:用户

在此处输入图像描述

我想在 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

我很难使用多列的 SET 语法。

4

2 回答 2

37

尝试这个

 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)**
于 2013-08-06T22:06:33.437 回答
15

您还可以破解插入操作:

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)
于 2014-12-21T21:16:07.610 回答