2017-06-13 10 views
0

大きなテーブルで実行する必要のある500個以上のSQL更新ステートメントがあります。更新ステートメントは、1つのメンバーに対してのみ実行するのに数分かかります。現在のところ、私はすべての更新ステートメントの各部分を更新することを停止する必要があります&。 可能であれば、これらをより効率的に実行して、完了プロセスをスピードアップする必要があります。私はアドレスなどのスプレッドシートをテーブルで更新する必要があります。SQLの多重ライン更新クエリの改善

私はPRBTADC、PRSTADCD、& STADDRCDをどちらかに変更する必要があります。 "都市名"、F- "都市名"、PF都市名 "、P-"都市名 " 理想的には、CUSTNMBR &" s、f、pf、p "ステータスを一度変更したいと思います代わりに、3本の別々のライン。

ここで私は、これはtediousprocessあるとしてすべてのヘルプは大歓迎されます

enter image description here

SELECT * FROM [N].[dbo].[RM00101] 
 
where CUSTNMBR ='21' 
 
SELECT * FROM [N].[dbo].[RM00102] 
 
where CUSTNMBR ='21' 
 

 
select 
 
--a.*, 
 
b.DEX_ROW_ID,a.PRBTADCD,a.PRSTADCD, a.STADDRCD, b.USERDEF1, b.* 
 
from RM00101 a 
 
inner join RM00102 b on a.CUSTNMBR = b.CUSTNMBR 
 
where a.CUSTNMBR ='21' 
 

 
update rm00102 
 
set 
 
ADRSCODE = left('PF-MISSOULA',15) 
 
where 
 
CUSTNMBR = '21' 
 
and ADRSCODE = 'PRIMARY' 
 

 

 
update RM00101 
 
set 
 
PRBTADCD = left('PF-MISSOULA',15) 
 
where 
 
CUSTNMBR = '21' 
 
and ADRSCODE = 'PRIMARY' 
 

 
update RM00101 
 
set 
 
PRSTADCD = left('S-WAREHOUSE',15) 
 
where 
 
CUSTNMBR = '21' 
 
and ADRSCODE = 'PRIMARY' 
 

 
update RM00101 
 
set 
 
STADDRCD = left('PF-MISSOULA',15) 
 
where 
 
CUSTNMBR = '21' 
 
and ADRSCODE = 'PRIMARY'

をやっているものの例であります。

答えて

2

1つの更新ステートメントで複数の列を更新しないのはなぜですか? like:

update RM00101 
    set ADRSCODE = left('PF-MISSOULA',15) 
    ,PRBTADCD = left('PF-MISSOULA',15) 
    ,PRSTADCD = left('S-WAREHOUSE',15) 
    ,STADDRCD = left('PF-MISSOULA',15) 
    where CUSTNMBR = '21' 
    and ADRSCODE = 'PRIMARY' 
+1

したがって、ステートメントをコピーしてテーブルを変更するだけです。作業完了 –

+1

選択した行を変更してください:custnmbr = '21'およびadrscode = 'Primary' –