有時間我們需要對一張表進行批量資料的更新。首先我們想的是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中 ...