更短的查询方法

psa*_*sam 2 sql t-sql sql-server-2008

源表和目标表都有大约40列.要更新的行数约为20.目标表的行数约为30k.

下面有更好的(更短的查询)方法吗?

UPDATE destination_table t1
SET 
field1 = (select field1 from src_table t2 where t2.pk = t1.pk),
field2 = (select field2 from src_table t2 where t2.pk = t1.pk),
... 
field40 = (select field40 from src_table t2 where t2.pk = t1.pk),
WHERE EXISTS (select 1 from src_table t2 where t2.pk = t1.pk)
Run Code Online (Sandbox Code Playgroud)

小智 5

你可以使用这样的东西:

UPDATE      dest
SET         dest.Field1 = src.Field1,
            dest.Field2 = src.Field2,
            dest.Field3 = src.Field3,
            dest.Field4 = src.Field4,
            dest.Field5 = src.Field5,
            dest.Field6 = src.Field6
FROM        destination_table dest
INNER JOIN  src_table src
ON          src.pk = dest.pk
Run Code Online (Sandbox Code Playgroud)

您只需添加额外的字段即可进行更新.