私は1つのクエリで複数の行に複数の列を設定しようとしていますが、これまでのところ運はありません。
これが私のテーブルの様子です
表:ユーザー
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構文に苦労しています。
これを試して
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)**
挿入操作をハックすることもできます:
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)