两个表取差集再插入到另一张表中

· 浏览次数 : 0

小编点评

概要: 本文主要讨论了如何将两个结构相似的表(t1和t2)中的数据进行差异合并。具体来说,是将t2表中不属于t1表的数据插入到t1表中。为实现这一目标,文章首先分析了两个表的结构,找到了它们的共通字段(other_id),然后通过SQL查询得到了两个表中的差集。最后,将差集中的数据插入到t1表中。 实现步骤: 1. 分析两个表的结构,找到共通字段(other_id)。 2. 使用SQL查询,从t2表中取出属于t1表的数据(t1.*)以及t2表中独有的数据。 3. 将取出的数据(id)粘贴到Sublime中,以逗号隔开。 4. 将这些id对应插入到t1表中。 注意事项: 1. 该方法适用于数据量较少的场景,如果数据量较大(如1w或更多),查询速度可能会变慢,此时可能需要使用脚本进行优化。 2. 在实际应用中,应根据数据量和系统性能选择合适的解决方案。

正文

@

概要

工作中采集时候遇到一个问题,就是两张结构一样的表数据不同,哪里不同呢,如t1表是基础表,里面数据量大,但是它不全,t2表有少数t1的数据也有一些自己额外的数据,我的需求是把t2里面t1没有的数据插入到t1中

思路梳理

这种也简单就是在t2中取t1和t2的差集,然后取出这些id再insert到t1中即可。
我的两个表都有一个共通的other_id,这个字段数据是唯一的,可以从other_id下手

实现步骤

  1. 取出他们两个的差集,从t2中
SELECT
    t1.*
FROM
    a_film t1
LEFT JOIN
    a_film_copy3 t2
ON
    t1.other_id = t2.other_id
WHERE
    t2.other_id IS NULL;
  1. 直接复制结果中所有的id,然后粘贴到sublime中,然后替换以逗号隔开

  2. 取出这些id然后对应插入到t1

INSERT INTO a_film_copy3 (title, cover, url, rating, casts, star, directors, cover_x, cover_y, other_id)
SELECT title, cover, url, rating, casts, star, directors, cover_x, cover_y, other_id from a_film where id in(...)

小结

这个方法目前只适用于数量级较少的场景中,我的是1w左右,查询速度2-3秒,如果1百万、1千万级估计吃不消,那时候可能用脚本跑更合适些,暂记录这么多。

与两个表取差集再插入到另一张表中相似的内容:

两个表取差集再插入到另一张表中

@目录概要思路梳理实现步骤小结 概要 工作中采集时候遇到一个问题,就是两张结构一样的表数据不同,哪里不同呢,如t1表是基础表,里面数据量大,但是它不全,t2表有少数t1的数据也有一些自己额外的数据,我的需求是把t2里面t1没有的数据插入到t1中 思路梳理 这种也简单就是在t2中取t1和t2的差集,然

[转帖]linux求数组的交集,shell/bash 交集、并集、差集

方法一(直接用文件名):取两个文本文件的并集、交集、差集 并: sort -m 交: sort -m 差 file1 - file2: sort -m 方法二(用变量参数):取两个文本文件的并集、交集、差集 file1=XXXX file2=YYYY # 并: sort -m # 交: sort -

[转帖]使用 EXISTS 代替 IN 和 inner join

在使用Exists时,如果能正确使用,有时会提高查询速度: 1,使用Exists代替inner join 2,使用Exists代替 in 1,使用Exists代替inner join例子: 在一般写sql语句时通常会遇到如下语句: 两个表连接时,取一个表的数据,一般的写法通过关联查询(inner j

高级前端开发需要知道的 25 个 JavaScript 单行代码

1. 不使用临时变量来交换变量的值 2. 对象解构,让数据访问更便捷 3. 浅克隆对象 4. 合并对象 5. 清理数组 6. 将 NodeList 转换为数组 7. 检查数组是否满足指定条件 8. 将文本复制到剪贴板 9. 删除数组重复项 10. 取两个数组的交集 11. 求数组元素的总和 12. ...

《最新出炉》系列初窥篇-Python+Playwright自动化测试-18-处理鼠标拖拽-上篇

1.简介 本文主要介绍两个在测试过程中可能会用到的功能:在selenium中宏哥介绍了Actions类中的拖拽操作和Actions类中的划取字段操作。例如:需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能。playwright同样可以实现元素的拖拽和释放的操作。 2.拖拽操作 鼠标拖拽操

AI 0基础学习,数学名词解析

AI学习过程中,常见的名词解析 ### 中位数 将数据从小到大排序,奇数列,取中间值,偶数列,中间两个值的平均,可做为销售指标 ### 众数 一组数据中,数值出现最多的那个。反映哪款产品,销量最好 ### 平均数 比赛中,去掉最高、最低分,然后以平均数做为选手的最终得分 ### 损失函数(loss

[转帖]docker容器跨主机网络overlay

https://www.cnblogs.com/machangwei-8/p/15757120.html 目录 拉取镜像,运行容器 浏览器上访问Consul 修改host1,host2的docker daemon配置文件 创建网络 验证 在overlay中运行容器 运行 查看一下这两个网卡 查看生成

在线获取所有依赖rpm包的方法

背景 现在经常有一些不能上网的LInux机器但是需要安装一些软件. 但是有时候经常因为有依赖关系找不到的情况比较麻烦. 或者是一些公司的网络总是受限,网络速度非常慢. 下载安装非常折磨人. 这个时候就需要从能够上网的机器拉取 rpm包进行处理. 但是此时经常有两个问题. 1. 拉取的架构可能不兼容.

[转帖]SQL中 join 、in 、exists 使用场景和执行效率

https://www.jianshu.com/p/c825c9bf42c2 众所周知,在sql 中,join /in /exists 都可以用来实现,“查询A表中在(或者不在)B表中的记录”,这种查询,在查询的两个表大小相当的情况下,3种查询方式的执行时间通常是:exists <= in <= j

[转帖]深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

https://www.cnblogs.com/jiangjunli/p/10617034.html 1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和course