0

我有以下情况。

 Table A // Dev
 ID
 NAME
 Address

 Table A  // Prod
 ID
 NAME
 Address

在从 Dev 中删除时,我需要检查它是否存在于 prod 中,如果存在,那么我需要从 prod 中恢复它的值并删除所有那些在 Prod 中不存在的值。任何关于此的 SQL 帮助?任何人都可以建议查询吗?

4

2 回答 2

1

如果两个数据库都在同一个实例中,那么您可以尝试以下查询:

--update query
update d set d.name = p.name, d.address = p.address
from dev.dbo.tableA d 
        join prod.dbo.tableA p on d.id = p.id

--delete query
delete dev.dbo.tableA
where id not in (select id from prod.dbo.tableA)
于 2013-05-16T09:23:28.143 回答
1

你应该使用查找

在此处输入图像描述

1.Source将是你的发展。

2.拖动查找并编写查询以从生产表中获取ID。在查找中匹配来自源和生产的ID,并从生产中选择ID以及生产中的其他列

在此处输入图像描述

3.拖动一个OLedb命令并写一个查询来更新dev

 update d set d.Col1 = ?, d.Col2 =?
  from dev.tableA d 
  where d.id = ?

4.类似地编写删除查询并映射从查找中选择的列

  delete from dev.tableA
  where id <> ?

注意:Oleb 命令对每一行执行。因此,如果行太多,它会很慢。如果性能是主要问题,那么您可以在查找后将所有数据转储到开发服务器中的表中,然后在执行 SQL 任务中使用Merge语法来执行更新和删除操作

于 2013-05-16T09:58:55.727 回答