我正在尝试在一个查询中为多行设置多个列,但到目前为止还没有运气。
这是我的表格的样子
表:用户
我想在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语法时遇到了困难。
答案 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)