SQL Server:更新/交换多个表中的多个字段

时间:2013-10-08 19:43:21

标签: sql sql-server-2008

SQL Server 2008,dbo.VDATA

中约有100万行

dbo.VDATA

PARTNO                 UDL3           ........
'100 - TXT'        '31OZ'
'101 - TXT'        '32 OZ'

dbo.VDAT_AUX

PARTNOAUX            UDL12          ........
'100 - TXT'               ''
'101 - TXT'               ''

我需要完成的任务:

SELECT * 
FROM dbo.VDATA 
WHERE (PARTNO LIKE '% - TXT')

for each row in dbo.VDATA
set @Var_PARTNO-TEMP = PARTNO
set PARTNO = UDL3 & ' - TXT'
       ##Add ' - TXT' and set as PARTNO value
set dbo.VDAT_AUX.UDL12 = (REPLACE @Var_PARTNO-TEMP, ' - TXT', '')
       ##Remove ' - TXT' and set as UDL12 value
set dbo.VDAT_AUX.PARTNOAUX = dbo.VDATA.PARTNO

期望结果的示例:

dbo.VDATA

PARTNO                 UDL3           ........
'31OZ - TXT'               '31OZ'
'32 OZ - TXT'             '32 OZ'

dbo.VDAT_AUX

PARTNOAUX            UDL12          ........
'31OZ - TXT'         '100'      
'32 OZ - TXT'          '101'

我可以选择我想要的行,但是我很遗憾如何逐步完成数据并将其改为需要...任何帮助/建议将不胜感激,谢谢你提前! :)

1 个答案:

答案 0 :(得分:0)

这是我根据信息猜测的:

UPDATE vaux
SET UDL12 = REPLACE(v.PARTNO, ' - TXT', ''),
    PARTNO=v.UDL3,
    PARTNOAUX=v.PARTNO
FROM dbo.VDATA AS v
JOIN dbo.VDAT_AUX AS vaux ON v.PARTNO=vaux.PARTNOAUX
WHERE v.PARTNO LIKE '% - TXT'

最后一组'PARTNOAUX = v.PARTNO'可能不是必需的 - 因为如果值不正确,JOIN将无效。

显然......你想在一些测试数据上尝试这个,而不是实时。