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

基于条件判断的表连接:处理重复ID避免笛卡尔积

条件关联避免笛卡尔积解决方案

针对你的需求,可以通过在JOIN的关联条件中直接加入code_T与Name的匹配规则,精准关联目标行,避免重复ID导致的笛卡尔积。

实现SQL语句

SELECT 
    a.ID,
    a.code,
    a.code_T,
    b.Desc
FROM TableA a
LEFT JOIN TableB b 
    ON a.ID = b.Id
    AND (
        (a.code_T = 290 AND b.Name = 'A')
        OR (a.code_T = 300 AND b.Name = 'B')
        -- 可选:如果code_T不是290/300时需要关联所有匹配ID的行,添加以下语句
        -- OR a.code_T NOT IN (290, 300)
    );

逻辑说明

  • 将匹配规则写入ON子句而非WHERE,确保只有符合code_T对应Name的TableB行才会被关联,从根源避免笛卡尔积。
  • 使用LEFT JOIN保证TableA的所有行都能被返回;如果只需要返回能匹配到TableB的行,可替换为INNER JOIN。

执行结果(未添加可选条件时)

IDcodecode_TDesc
1100100NULL
2101290ABC
3102300CDE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:45:12