我的两个数据库都在同一台服务器上,DB1
包含新旧数据,DB2
包含旧数据。DB1
包含不同的表和列,然后包含DB2
中的数据。 1}}。我担心的是覆盖旧数据和创建重复数据。两者都有不同的主/外键和关系
我有一个查询,
update t1
set description = t2.description
from db1.dbo.foo t1
join db2.dbo.foo t2
on t1.itemid = t2.itemid
我想要做的是检查记录是否已经存在,以及所有值是否匹配以不创建重复。如果某些值不匹配,请使用最新的记录更新记录。我可以使用唯一的ID吗?
由于
答案 0 :(得分:0)
以下是您可以使用存在关键字的方法。
IF NOT EXISTS (SELECT DB1.<column_where_data_is_being_checked>
FROM DB1.dbo.table_name DB1 INNER JOIN DB2.dbo.table_Name
DB2 ON DB1.<unique_ID> = DB2.<unique_ID>
WHERE DB2.<column_where_data_is_being_checked> =
SELECT DB1.<column_where_data_is_being_checked>
FROM DB1.dbo.table_name DB1)
UPDATE...
这可能会起作用,您可能需要修改exists语句中的查询并构建一个不同的临时表,您可以在更新后删除它。如果该值不存在,它将继续通过列表。本网站提供了有关此概念的更多信息https://msdn.microsoft.com/en-us/library/ms188336.aspx