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

Oracle中带条件LEFT JOIN写法求助:关联两表获取指定结果

Oracle SQL 动态关联查询实现方案

可以通过两种方式实现你的需求,根据实际场景选择即可:

方法一:UNION ALL 拆分场景

这种方式逻辑直观,便于维护,且能更好利用表B对应列的索引:

SELECT A.name, B.level6
FROM A
JOIN B ON A.level = B.level4
WHERE A.level = 4
UNION ALL
SELECT A.name, B.level6
FROM A
JOIN B ON A.level = B.level5
WHERE A.level = 5;

方法二:CASE 条件关联

如果希望用单查询语句实现,可在JOIN条件中使用CASE逻辑:

SELECT A.name, B.level6
FROM A
JOIN B ON 
    CASE A.level 
        WHEN 4 THEN B.level4 
        WHEN 5 THEN B.level5 
    END = A.level
WHERE A.level IN (4, 5);

说明

  • 假设表A中存在name='AAA'且level分别为4和5的两条记录,表B中对应level4=4时level6=46、level5=5时level6=56,执行上述任一语句都将得到预期结果:
    AAA 46
    AAA 56
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:14:52