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

PostgreSQL增量加载场景下如何查询被移除的记录

解决方案

首先明确核心逻辑:被移除的记录是「加载前最终表中,所属ID在当前增量表中存在,但自身未出现在当前增量表同ID下的记录」。针对首日(最终表为空)和次日的场景,通用查询方案如下:

假设表结构为:

  • incremental_table:id INT, code VARCHAR
  • final_table:id INT, code VARCHAR

查询被移除记录的SQL

SELECT ft.id, ft.code
FROM final_table ft
-- 只关注增量表中存在的ID对应的最终表记录
JOIN (SELECT DISTINCT id FROM incremental_table) it_ids 
  ON ft.id = it_ids.id
-- 过滤掉增量表中仍存在的同ID同Code记录
WHERE NOT EXISTS (
    SELECT 1
    FROM incremental_table it
    WHERE it.id = ft.id AND it.code = ft.code
);

场景验证

  1. 首日加载前:final_table为空,查询返回空结果,符合预期(无记录被移除)。
  2. 次日加载前:final_table包含(1,A),(1,B),(2,C),incremental_table包含(1,D)。查询会筛选出(1,A),(1,B),正是需要找出的被移除记录。

注意事项

  • 需在更新final_table之前执行该查询,否则原记录已被覆盖,无法获取被移除的内容。
  • 如果你的表有其他主键/唯一键,只需调整WHERE子句中的匹配条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:51:15