2017-06-13 109 views
0

我有500多個SQL更新語句需要在大型表上執行。更新語句需要幾分鐘才能執行一個成員。截至目前,我不得不停止&更新每個更新語句的每個部分。 如果可能的話,我需要以更高效的方式運行這些程序,以加快完成過程。我有一個地址等電子表格,需要在表格中更新。SQL多行更新改進查詢

我需要將PRBTADC,PRSTADCD,& STADDRCD更改爲; S-城市名稱,F-城市名稱,PF城市名稱,P-城市名稱 理想情況下,我只想更改CUSTNMBR &的「s,f,pf,p」狀態一次而不是3條獨立的線路。

下面是我在做

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'

什麼任何幫助,將不勝感激一個例子,因爲這是一個tediousprocess 。

回答

2

爲什麼不更新一個更新語句中的幾列?如:

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

應該剛剛更改了您選擇的行:with custnmbr ='21'and adrscode ='Primary' –