阅读行但首先搜索

时间:2013-01-04 18:51:42

标签: sql sql-server sql-server-2008

  • 我想创建一个导入系统,它将查看一个数据源并将新记录复制到另一个DataSource。
  • 每月我想将一些表数据从一个数据源复制到另一个数据源

SourceTableName:srcTable
DestinationTableName:destTable

假设源表中的第一个月我有:

  

Id Name
1 john
  3 Rahul
5 Andrew

所有三行都将复制到desTable

假设源表中的第二个月我有

  

Id姓名
1 John   3 Rahul
5 Andrew
  6 Vikas
7 Sonam
  8 Divya

首先,Sql应该获得desTable的最后一行 并将该行与srcTable进行匹配 并从scrTable中提取所有新记录并复制到desTable

.....

请让我知道如何编写查询以实现上述目的。如果有更短的方法,这也会有所帮助。

2 个答案:

答案 0 :(得分:0)

由于您只关心添加新记录,并且不需要处理更新或删除...如果目标表中不存在记录,您只需添加源表中的记录:

INSERT INTO destTable (ID, Name)
SELECT s.ID, s.Name
FROM 
    srcTable s 
    LEFT OUTER JOIN destTable d ON d.ID = s.ID
WHERE
    d.ID IS NULL

答案 1 :(得分:0)

您可以编写存储过程来执行此操作,并在每次需要时执行该操作。 对于此操作,您可以从以下查询: (插入新数据的第1部分,更新更改数据的第2部分)

Insert Into DestinationTable(ID, Name)
Select  ID, Name
    From    SoiurceTable
    Where   Not Exists
            (Select *
                From    TDestinationTablest
                Where   DestinationTable.ID =   SoiurceTable.ID)
Go
Update  DestinationTable
    Set DestinationTable.Name  =    SoiurceTable.Name
    From    DestinationTable, SoiurceTable
        Where   DestinationTable.ID     =   SoiurceTable.ID

我希望它有用。