2013-08-06 102 views
15

我想在一個查詢中爲多個行設置多個列,但到目前爲止沒有運氣。在一個SQL查詢中更新多個行的多列

這裏是我的表看起來像

表:用戶

enter image description here

我想設置USER_ID 'EXT_ID' IN(3,4,5),也喜歡設置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語法中有很多時候很困難。

回答

27

試試這個

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)** 
+0

Cool..that工作! :) –

+0

很好:)你歡迎! –

+0

是的,sir.SO不允許在5分鐘內標記答案。將在一分鐘內標記。 :) –

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)