我正在尝试基于三个条件实现完全外连接,所有这些条件都由逻辑 AND 链接。但是,第三个条件并不总是有效的:它基于一个名为“counter”的列,在某些情况下,它在我想要加入的表中可能是“null”。让我更详细地解释一下。基本的 join on 语句如下所示:
... table1 full outer join table2
on (table1.1=table2.1 AND table1.2=table2.2 AND table1.counter=table2.counter)
但是,现在在某些情况下 table1.counter 可能为 null,而 table2.counter 不是。在这些情况下,我希望在前两个条件下进行连接,而忽略第三个条件。
我的想法是这样做:
... table1 full outer join table2
on (table1.1=table2.1 AND table1.2=table2.2
AND table1.counter= case when table1.counter is null then null
else table2.counter
end)
然而,这不起作用,因为结果与第一个代码中的结果完全相同,即第一个 case 语句永远不会被触发。但我不明白为什么?
非常欢迎任何提示或见解!