0

我有一张表,我必须加入 4 列:

SELECT columns 
FROM table t 
LEFT JOIN other_table ot ON o.col1 = ot.col1 
    AND o.col2 = ot.col2 
    AND o.col3 = ot.col3 
    AND o.col4 = ot.col4

但是,如果 other_table 中的任何列为空,我想将连接条件评估为 true,而不管 t 中另一列的值如何,例如,如果给定行的 ot.col4 为空,则仅评估 col1、col2 和col3 加入时的条件。

有任何想法吗?

4

2 回答 2

4

请试试:

SELECT columns 
FROM table t 
LEFT JOIN other_table ot ON o.col1 = NVL(ot.col1, o.col1)
    AND o.col2 = NVL(ot.col2, o.col2)
    AND o.col3 = NVL(ot.col3, o.col3)
    AND o.col4 = NVL(ot.col4, o.col4)
于 2013-07-04T11:16:36.910 回答
2
SELECT columns 
FROM table t 
LEFT JOIN other_table ot ON o.col1 = nvl(ot.col1,t.col1) 
    AND o.col2 = nvl(ot.col2, t.col2)
    AND o.col3 = nvl(ot.col3, t.col3)
    AND o.col4 = nvl(ot.col4, t.col4)
于 2013-07-04T11:17:24.413 回答