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

SQL如何提取C、D列值匹配且E列值相同的行并新增公共值列

SQL实现多条件行匹配及公共值提取

实现逻辑

  • 采用同表自连接匹配满足规则的两行数据
  • 核心匹配规则:左表C列值 = 右表D列值,且两张关联行的E列值完全相等
  • 新增F列存储C、D列的公共匹配值
  • 可根据需求选择返回配对行或去重后的符合条件行

完整实现代码

方案1:返回配对的两行完整数据(含公共匹配列F)

SELECT 
    t1.*,
    t1.C AS F -- 此处t1.C与关联的t2.D值完全相等
FROM 你的表名 t1
INNER JOIN 你的表名 t2
    ON t1.C = t2.D 
    AND t1.E = t2.E
    -- 避免行与自身匹配,若表有唯一主键建议替换为 t1.主键 <> t2.主键,准确率更高
    AND t1.A <> t2.A 
    AND t1.B <> t2.B
UNION ALL
-- 关联匹配到的第二行数据
SELECT 
    t2.*,
    t2.D AS F
FROM 你的表名 t1
INNER JOIN 你的表名 t2
    ON t1.C = t2.D 
    AND t1.E = t2.E
    AND t1.A <> t2.A 
    AND t1.B <> t2.B;

方案2:返回去重后的符合条件行(无重复数据)

如果不需要展示配对关系,仅需要提取所有满足规则的不重复行,可使用EXISTS简化写法:

SELECT 
    *,
    (SELECT C FROM 你的表名 t2 WHERE t2.D = t1.C AND t2.E = t1.E LIMIT 1) AS F
FROM 你的表名 t1
WHERE EXISTS (
    SELECT 1 
    FROM 你的表名 t2
    WHERE (t1.C = t2.D OR t1.D = t2.C)
    AND t1.E = t2.E
    AND t1.A <> t2.A 
    AND t1.B <> t2.B
);

验证说明

使用你提供的示例数据测试,上述代码会返回E列为$128的两行数据,新增F列值均为ABC,完全符合预期输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:04