在2个SQL Server表之间查找重复项,并在另一个表中返回两个值,然后将其更新为重复项

时间:2018-11-05 15:21:57

标签: sql-server tsql

我有3个SQL Server表。表#1是tblHistory,第二个是tblTemp,每天的Excel都上传到其中,表#3是tblDuplicate

样本数据:

tblHistory

PostingDate  DocumentDate Reference URN   Supplier  St   Check1
-------------------------------------------------------------------------
2018-11-05    12/09/2018   12345    12345   12345    2   12/09/201812345

tblTemp

PostingDate  DocumentDate Reference URN   Supplier  St   Check1
-------------------------------------------------------------------------
2018-10-05    12/09/2018   12345    12345   12345    2   12/09/201812345

我写了一个查询以返回重复的值

select 
    PostingDate, DocumentDate, Reference, URN, St, Check1 
from 
    tblTemp
where 
    Check1 in (select Check1 from tblHistory);

但到目前为止,它仅返回一个值。

我还需要查询以返回tblDuplicate中的两个值。

请帮助。

谢谢

1 个答案:

答案 0 :(得分:2)

INSERT INTO tblDuplicate
SELECT * FROM (
      SELECT h.PostingDate, h.DocumentDate, h.Reference, h.URN, h.St, h.Check1 
      FROM tblHistory h
      WHERE h.Check1 IN(SELECT Check1 FROM tblTemp)
    UNION 
      SELECT t.PostingDate, t.DocumentDate, t.Reference, t.URN, t.St, t.Check1 
      FROM tblTemp t
      WHERE t.Check1 IN(SELECT Check1 FROM tblHistory)
    ) as AllData

使用此请求,如果另一个表中的数据,则返回tblTemp和tblHistory中的所有数据。