You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合使用INSERT INTO与JOIN实现跨表去重插入

解决方案

核心实现逻辑

通过左连接筛选出t2中未在t1出现过的独有记录,再批量插入到主表t1中,重复判断规则为Date和Details两个字段同时匹配。

符合INSERT+JOIN要求的SQL写法

INSERT INTO t1 (Date, Details)
SELECT t2.Date, t2.Details
FROM t2
LEFT JOIN t1 
  ON t2.Date = t1.Date 
  AND t2.Details = t1.Details
WHERE t1.Date IS NULL;

写法说明

  • 用t2作为左表关联t1,关联条件设置为两个字段同时相等
  • 关联后如果t1.Date为NULL,说明这条t2的记录在t1中没有匹配项,正是需要插入的目标数据
  • 执行后仅会插入t2中两条独有的新记录,不会重复插入已经存在的匹配数据

其他可选写法(拓展)

如果所用数据库支持对应语法,也可以选择更简洁的实现:

EXCEPT语法版本

INSERT INTO t1 (Date, Details)
SELECT Date, Details FROM t2
EXCEPT
SELECT Date, Details FROM t1;

NOT EXISTS语法版本

INSERT INTO t1 (Date, Details)
SELECT t2.Date, t2.Details
FROM t2
WHERE NOT EXISTS (
  SELECT 1 FROM t1 
  WHERE t1.Date = t2.Date 
  AND t1.Details = t2.Details
);

最终执行效果

插入完成后t1的完整数据如下:

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

内容的提问来源于stack exchange,提问作者krishnadas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:36:05