SQL批量更新

2022-02-02 19:18:38 字數 2028 閱讀 1493

如下**,怎樣寫成一句,或中間用什麼字元隔開才能同時執行?

update yao_article set author='/1/35/' where author='山東 - 歷下'  

update yao_article set author='/1/36/' where author='山東 - 市中'  

update yao_article set author='/1/37/' where author='山東 - 槐蔭'  

update yao_article set author='/1/38/' where author='山東 - 天橋'  

update yao_article set author='/1/39/' where author='山東 - 歷城'  

update yao_article set author='/1/40/' where author='山東 - 長清'  

update yao_article set author='/1/41/' where author='山東 - 平陰'  

update yao_article set author='/1/42/' where author='山東 - 濟陽'

用case語句試試:

update yao_article set author=(case author when '山東 - 歷下'  then '/1/35/' when '山東 - 市中' then '/1/36/' ...... when '山東 - 濟陽' then '/1/42/' else author end) where author like '山東 - %'

***************************

sql資料庫中有1個表名叫 asc001

表中有item_no,item_subo 兩個字段

這個表中有5萬行資料

其中有8000行資料的item_no<>item_subo

現在要將item_no<>item_subo的這8000行資料修改為item_no=item_subo

同時還有45個表,並且這45個表中都有item_no欄位,要將這45個表中的item_no同步更新,有什麼辦法可以解決嗎?

一、臨時表法

1、select item_no, item_subo into tt_diff from asc001 where item_no <> item_subo

必要時,在tt_diff上建立索引,如create index i_tt_item_no on tt_diff( item_no )

2、針對asc001以及另外的45個表,各自執行如下命令:

update 表 set t.item_no = x.item_subo from 表 t, tt_diff x where t.item_no = x.item_no

3、drop table tt_diff

二、觸發器法

1、在asc001上建立如下觸發器

create trigger tr_update_item_no

on asc001

for update

asbegin

if update( item_no ) then

begin

-- 針對45個表,重複如下框架的命令

update 表

set t.item_no = i.item_no

from 表 t, inserted i, deleted d

where t.item_no = i.item_no

and i.item_no <> d.item_no

endend

2、執行命令,使觸發器邏輯發生作用

update asc001 set item_no = item_subo where item_no <> item_subo

3、刪除觸發器

drop trigger tr_update_item_no

說明:若採用第二種方法,當asc001上已經有觸發器的時候,需要先儲存其指令碼,幹完這個活兒後再恢復,並且,所有改變發生在乙個事務中,要求日誌空間得足夠大。

sql批量更新

批量更新 1 statement statement cn.createstatement addbatch sql1 addbatch sql2 executebatch 乙個statement物件,可以執行多個sql語句以後,批量更新。這多個語句可以是delete update insert等或...

sql批量更新

批量更新 mysql更新語句很簡單,更新一條資料的某個字段,一般這樣寫 複製 如下 update mytable set myfield value where other field other value 如果更新同一欄位為同乙個值,mysql也很簡單,修改下where即可 複製 如下 upda...

批量更新sql 批量update sql

批量更新sql 批量update sql 批量更新表時,update乙個表的列時,需要依賴另外的表,這種依賴可以是where條件子句,也可以要update的field的值依賴另外的表 通常有兩種做法 1.使用儲存過程 2.在程式 裡逐條迴圈執行 這裡給出一種更高效 簡潔的做法,批量更新sql 一句s...