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

@

概要

工作中采集时候遇到一个问题,就是两张结构一样的表数据不同,哪里不同呢,如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千万级估计吃不消,那时候可能用脚本跑更合适些,暂记录这么多。

posted @ 2024-06-25 10:12  蜗牛使劲冲  阅读(20)  评论(0编辑  收藏  举报