如何使用 insert into 和 join together

How to use insert into and join together

我想做的是我有 2 tables t1t2t1 是主要的 table,来自 t2 的信息每天都被插入到 t1 中。

我正在尝试使用 insert 和 join 在一起,这样 t1t2 中的所有匹配数据就不会再次插入到 t1 中。

我只想将 table t2 中的唯一项目插入 t1

Table T1:

Date                Details
-------------------------------
01-02-2021 11.02    completed
01-02-2021 01.30    cancelled

Table T2:

Date                Details
-------------------------------
01-02-2021 11.02    completed
01-02-2021 01.30    cancelled
02-03-2021 03.30    running
02-03-2021 05.30    failed

我建议你使用EXCEPT

示例:

INSERT INTO T1( [Date], Details )
SELECT [Date], Details
FROM T2
EXCEPT -- This is equivalent to subtracting T1 records from T2 records
SELECT [Date], Details
FROM T1

您也可以使用 LEFT JOIN:

INSERT INTO T1( [Date], Details )
SELECT [Date], Details
FROM T2
    -- Add all of the columns that you want to match one.
    LEFT JOIN T1 ON T2.[Date] = T1.[Date] AND T2.Details = T1.Details
-- This ensures that only records that did not match T1 are returned.
WHERE T1.[Date] IS NULL

当您想要 return 其他列(在 SELECT 列列表中)在匹配表的列之上时,Left Join 方法很有用。

如果您想要过滤表的所有输出列,则 Except 方法更适合。