2013-08-06 59 views
15

Tôi đang cố gắng đặt nhiều cột cho nhiều hàng trong một truy vấn, nhưng cho đến nay không có may mắn.Cập nhật nhiều cột cho nhiều hàng trong một truy vấn SQL

Sau đây là cách bàn của tôi trông giống như

Bảng: hướng dẫn

enter image description here

Tôi muốn thiết 'ext_id' trên user_id IN (3,4,5) và cũng muốn thiết lập ext_flag = Y và admin_role = admin trên cùng một hàng.

bảng kết quả trông giống như sau enter image description here

truy vấn của tôi trông như thế này, nhưng tôi nhận được erros do không quen với cú pháp 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 

Tôi gặp khó khăn trong cú pháp SET với nhiều cột.

Trả lời

27

thử này

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 làm việc! :) –

+0

đẹp :) bạn hoan nghênh! –

+0

Có sir.SO không cho phép đánh dấu câu trả lời trong 5 phút. Sẽ đánh dấu sau một phút. :) –

9

Bạn cũng có thể hack các hoạt động chèn:

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)