首页 > 解决方案 > 如何根据条件连接具有不同列的 2 个 SQL 表?

问题描述

我有 2 张桌子:CT 和 AC

当 CT.X = '1' 我想内部加入 CT.A 和 AC.A

当 CT.X = '2' 我想内部加入 CT.B 和 AC.A

对于任何其他 CT.X,我想将 CT.C 与 AC.A 内部加入

在 SQL 中执行此操作的优雅方法是什么?

标签: sqlamazon-redshift

解决方案


我认为这样的事情应该有效:

select *
from CT
inner join AC
    on (CT.X = '1' and CT.A = AC.A)
    or (CT.X = '2' and CT.B = AC.A)
    or (CT.X <> '1' and CT.X <> '2' and CT.C = AC.A);

推荐阅读