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

基于单列去重并按最新variation_id获取关联表记录的SQL实现

解决方法:筛选最新variation_id的关联行

你需要的是基于两张表的关联,筛选出每个ID和行号对应的最新版本(最大variation_id)的记录。核心思路是先定位第二张表中每个(ID2, ID-LineNO)组合的最新版本号,再关联回原表和第一张表得到最终结果。

完善后的SQL语句

SELECT DISTINCT t1.ID1, t2.ID2, t2.`ID-LineNO`, t2.variation_id2
FROM first_table t1
INNER JOIN second_table t2 
    ON t1.ID1 = t2.ID2
INNER JOIN (
    -- 子查询:获取每个ID2+ID-LineNO对应的最新variation_id2
    SELECT ID2, `ID-LineNO`, MAX(variation_id2) AS latest_var
    FROM second_table
    GROUP BY ID2, `ID-LineNO`
) t2_latest 
    ON t2.ID2 = t2_latest.ID2
    AND t2.`ID-LineNO` = t2_latest.`ID-LineNO`
    AND t2.variation_id2 = t2_latest.latest_var

逻辑说明

  1. 子查询t2_latest:通过GROUP BY ID2, ID-LineNO对第二张表分组,用MAX(variation_id2)拿到每个分组的最新版本号——因为每次更新都会插入新行,更大的variation_id就对应更晚的记录。
  2. 关联原表:将second_table和子查询关联,确保只取出每个分组中版本号匹配最新值的记录。
  3. 关联第一张表:通过ID1 = ID2关联两张表,同时用DISTINCT去除第一张表中同一ID多条重复记录带来的冗余结果。

测试验证

用你提供的测试数据运行这条SQL,会返回完全符合期望的结果:

ID1ID2ID-LineNOvariation_id2
111111102
111111202

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:24:00