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

2021-07-24 07:15:33 字數 1577 閱讀 8235

有時間我們需要對一張表進行批量資料的更新。首先我們想的是update 語句。

比如對一張訂單表order_info 多條資料更新,

update order_inifo

set   order_code =case order_id

when    1 then 'abc'

when    2 then 'bcd'

when    3 then 'cde'

end,

order_title=case order_id

when    1 then '標題1'

when    2 then '標題2'

when    3 then  '標題3'

endwhen id in(1,2,3,..)

這樣實現多條資料 多個欄位的更新,這樣更新方式的條件是:

根據表中的字段id在等於不同值時,更新字段 order_code,order_title. 

更新成相應的資料,這些資料都是可以明確的。但有時間這些資料是存放在乙個集合裡面,『abc』,'bcd','cde','標題1','標題2','標題3',就沒法寫在上面了。這需要

遍歷集合拿到相應的值,才能賦予對應的字段。由於 需要更新的字段 內容和id儲藏在集合中,就沒辦法使用這樣的sql語句了。有沒有別的辦法呢?

我們可以使用replace into方法來實現更新,replace into類似於insert,insert是比較熟悉的,經常使用,就是向資料庫中插入資料。replace into 也是向資料庫中

插入資料,不同的時,在插入資料時,資料庫會根據主鍵或者唯一建(必須保證操作表中含有主鍵或者唯一建)判斷表中是否已經含有對應的資料,如果沒有直接插入,等同於insert,如有表中已經有對應的資料,那replace into就會根據主鍵或唯一建將該條資料delete掉,再做insert處理。

這樣的話,我們完全可以使用replace into批量更新表中的資料。

replace into order_info (

order_code,

order_company,

order_statu,

order_id,

order_title

) select 

a.order_code,

a.order_company,

a.order_statu,

b.order_id ,

b.order_title

from

( select 

2 order_statu,

'$' order_id,

'$' order_log,

'$' order_company

) a,

order_info b 

where a.order_id = b.order_id 

主鍵order_id和需要更新的字段order_code,order_company。都在集合中。通過replace into可以實現表的批量更新。值得注意的是:

replace into在做update操作時,將原來的資料delete掉了,所有除了更新的字段,其他字段(order_title)需要從原表中查詢出來,一塊更新。

資料庫操作,同時更新多條資料

無論是更新一條或多條資料,先要對更新情況進行分類 1.只更新一條資料 where 1 name jack db where id where update name name 2.更新多條資料,更新條件相同 where valid name jack db where valid where upd...

MySQL批量插入多條資料

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

Oracle中插入多條資料

1 oracle中 insert into product id,names,price,code select 100,a 1,1 from dual union select 101,b 2,2 from dual 這裡最好用一次insert,不然效率不高,用多個select.2 mysql中 ...