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

源表与目标表行级匹配需求:按orig字段匹配并更新version字段

数据表同步解决方案(按匹配键同步并维护version字段)

先明确两张表的结构与初始数据

源表(source_table)

orig1orig2orig3xref1xref2xref3
111222
111333
232323121212

目标表(target_table)初始数据

orig1orig2orig3xref1xref2xref3version
1111110

实现逻辑与SQL代码

咱们的核心需求是以orig1、orig2、orig3作为匹配键,判断源表每行是否在目标表中有对应匹配行,然后按规则追加数据:

  • 若匹配:追加源表行,version字段取目标表对应匹配行的最大版本号+1
  • 若不匹配:追加源表行,version字段设为0

这里用SQL的LEFT JOIN结合聚合函数来实现,具体代码如下(以MySQL为例,其他数据库逻辑类似,仅函数细节可能调整):

-- 插入源表数据到目标表,按规则生成version字段
INSERT INTO target_table (orig1, orig2, orig3, xref1, xref2, xref3, version)
SELECT 
    s.orig1,
    s.orig2,
    s.orig3,
    s.xref1,
    s.xref2,
    s.xref3,
    CASE
        -- 如果目标表存在匹配的键,取最大version加1
        WHEN MAX(t.version) IS NOT NULL THEN MAX(t.version) + 1
        -- 不存在匹配则设为0
        ELSE 0
    END AS version
FROM source_table s
LEFT JOIN target_table t 
    ON s.orig1 = t.orig1 
    AND s.orig2 = t.orig2 
    AND s.orig3 = t.orig3
-- 按源表的行分组,确保每行都能被处理
GROUP BY s.orig1, s.orig2, s.orig3, s.xref1, s.xref2, s.xref3;

最终输出表结果

执行上述SQL后,目标表会变成如下数据:

orig1orig2orig3xref1xref2xref3version
1111110
1112221
1113331
2323231212120

逻辑说明

  • 源表中前两行的orig1-3都是(1,1,1),和目标表初始行匹配,所以version取0+1=1
  • 源表第三行的orig1-3是(23,23,23),目标表中没有匹配行,所以version设为0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:42:00