如何使用插入和连接在一起

Posted

技术标签:

【中文标题】如何使用插入和连接在一起【英文标题】:How to use insert into and join together 【发布时间】:2022-01-08 15:53:19 【问题描述】:

我想做的是我有 2 张桌子 t1t2t1 是主表,来自t2 的信息每天都会插入到t1

我正在尝试同时使用插入和连接,以便t1t2 中的所有匹配数据不会再次插入t1

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

表 T1:

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

表 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

【问题讨论】:

【参考方案1】:

我建议你使用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

当您想要在匹配表的列的顶部返回其他列(在 SELECT 列列表中)时,左连接方法很有用。

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

【讨论】:

非常感谢您的帮助.. 这个方法对我有用 如果答案有助于您解决问题,请随时将答案标记为已接受。

以上是关于如何使用插入和连接在一起的主要内容,如果未能解决你的问题,请参考以下文章

如何将strapi、graphql和postgres连接在一起?

在JAVA连接的数据库中插入数据时如何避免重复信息~

如何在 Airflow 中将 DatabaseHook 对象与 PythonOperator 一起使用而不会耗尽连接?

如何连接多个音频输出通道以与 PyAudio 一起使用?

如何将两个NodeJS docker容器连接在一起?

如何使用 mongoose 和 NodeJs 在 Mongodb 的数组字段中插入数据