此问题是现有问题here的延续。
我需要在同一个实例上的两个数据库中比较两个相似的表,如果记录存在则更新数据,如果不存在则更新。我计划使用合并作为上述问题的答案。
但我想知道是否有任何简单的解决方案可以使用其他表更新整个表,而无需在UPDATE查询中写入SET语句中的所有列。
我的意思是我不想写SET t1.col1 = t2.col2,t1.col2 = t2.col2等等。
答案 0 :(得分:1)
除了动态创建查询并动态执行它之外,没有简单的方法可以做到这一点,这两种方式都是纯粹的邪恶。
答案 1 :(得分:1)
将YourTableName
名称替换为您的表名称,将结果复制到合并语句并删除最后一个逗号。
declare @S varchar(max)
set @S = 'SET '
select @S = @S + 'T1.'+name+'=T2.'+name+', '
from sys.columns
where object_name(object_id) = 'YourTableName'
order by column_id
select @S