mysql 實現批量更新多條資料為不同的值

2021-08-09 04:09:15 字數 1018 閱讀 2505

update mytable 

set myfield = case id

when 1 then 'value'

when 2 then 'value'

when 3 then 'value'

endwhere id in (1,2,3)

這裡使用了case when 這個小技巧來實現批量更新。

舉個例子:

update categories 

set display_order = case id

when 1 then 3

when 2 then 4

when 3 then 5

endwhere id in (1,2,3)

這句sql的意思是,更新display_order 字段,如果id=1 則display_order 的值為3,如果id=2 則 display_order 的值為4,如果id=3 則 display_order 的值為5。

即是將條件語句寫在了一起。

這裡的where部分不影響**的執行,但是會提高sql執行的效率。確保sql語句僅執行需要修改的行數,這裡只有3條資料進行更新,而where子句確保只有3行資料執行。

如果更新多個值的話,只需要稍加修改:

update categories 

set display_order = case id

when 1 then 3

when 2 then 4

when 3 then 5

end,

title = case id

when 1 then 'new title 1'

when 2 then 'new title 2'

when 3 then 'new title 3'

endwhere id in (1,2,3)

到這裡,已經完成一條mysql語句更新多條記錄了

MySQL批量插入多條資料

mysql在插入大量資料 十萬級或者百萬級別 時效率會變得很差,所以需要採用以下方法來提高其插入效率。a 關閉自動提交,改為手動提交 connect.setautocommit false 插入資料完後最後再con.commit b 拆分資料,多執行緒入庫 c 一條插入語句插入多條資料 insert...

mysql 中實現多條資料同時更新

有時間我們需要對一張表進行批量資料的更新。首先我們想的是update 語句。比如對一張訂單表order info 多條資料更新,update order inifo set order code case order id when 1 then abc when 2 then bcd when 3...

SQL更新多條資料

問題 有兩個不同的表,其中都有乙個編號的字段,而且儲存的內容是相同的,需要將一張表中的另外一些字段依據編號去與另乙個表中編號對應來更新到另乙個表中。方法 由於在sql中是不支援同時更新多條包含編號的資料的,所以當我們要更新多條資料的時候我們需要進行逐條的更新操作,這個時候我們需要用到游標。游標是只能...