移动数据值

移动数据值

问题描述:

技术: SQL Server Management Studio中2012移动数据值

滞留于:的WHERE的过程的一部分。

目的:

  1. 从正在运行的系统基于使用col1和col2的如引用(在TblImportData举行)

  2. 删除归档数据从Live系统在新的进口数据

    存档数据

  3. 将导入的数据移至生效

实施例的工作流程:

TblData  

Col1 Col2 Col3 
1 Horse Brown 
1 Cat Ginger 
2 Fish Gold 
2 Dog White 
3 Cat Mixed 
3 Cat Black 
3 Fish Yellow 

TblImport  

Col1 Col2  Col3 
1  Elephant Grey 

TblDataAFTERSQL  

Col1 Col2 Col3 
1 Elephant Grey 
2 Fish  Gold 
2 Dog  White 
3 Cat  Mixed 
3 Cat  Black 
3 Fish  Yellow 

TblArchiveAFTERSQL  

1 Horse Brown 
1 Cat  Ginger 

查询是:

INSERT INTO [DBArchive].dbo.TblDataArchive ([Col1],[Col2],[Col3]) 
    SELECT [Col1],[Col2],[Col3] 
    FROM [DBLive].dbo.TblData 
    WHERE (SELECT DISTINCT [Col1],[Col2] FROM [DBImport].dbo.TblImportData) 
+0

为什么-1?问任何你需要的东西。我可以添加链接,但这是我所需要的。大多数人工作,这是我坚持的WHERE部分。 – indofraiser

+1

样本数据和期望的结果确实有助于传达您想要做的事情。 –

+0

完成后,需要查看如何让它看起来更好看! – indofraiser

我想这是你想要什么:

INSERT INTO [DBArchive].dbo.TblDataArchive ([Col1], [Col2], [Col3]) 
    SELECT [Col1], [Col2], [Col3] 
    FROM [DBLive].dbo.TblData td 
    WHERE EXISTS (SELECT 1 
        FROM [DBImport].dbo.TblImportData tid 
        WHERE tid.[Col1] = td.[Col1] AND tid.[Col2] = td.[Col2] 
       ); 
+0

不会左连接,其中null在此特定情况下表现更好(因为您引用where子句中的主列 – SQLMason

+0

谢谢!它应该是TID。[Col1] = td。[Col1]? – indofraiser

+0

@ SQLMason你在想什么?所有人都想改进! – indofraiser