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)
您只需添加额外的字段即可进行更新.