2017-06-13 75 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' –