移动数据值
技术: SQL Server Management Studio中2012移动数据值
滞留于:的WHERE的过程的一部分。
目的:
- 从正在运行的系统基于使用col1和col2的如引用(在TblImportData举行)
-
删除归档数据从Live系统在新的进口数据
存档数据
将导入的数据移至生效
实施例的工作流程:
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)
我想这是你想要什么:
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]
);
不会左连接,其中null在此特定情况下表现更好(因为您引用where子句中的主列 – SQLMason
谢谢!它应该是TID。[Col1] = td。[Col1]? – indofraiser
@ SQLMason你在想什么?所有人都想改进! – indofraiser
为什么-1?问任何你需要的东西。我可以添加链接,但这是我所需要的。大多数人工作,这是我坚持的WHERE部分。 – indofraiser
样本数据和期望的结果确实有助于传达您想要做的事情。 –
完成后,需要查看如何让它看起来更好看! – indofraiser