有时候会写出这样的SQL:
SELECT TABLEC.D
FROM TABLEA
LEFT JOIN TABLEB ON TABLEA.A = TABLEB.A
LEFT JOIN TABLEC ON TABLEC.C = TABLEA.C OR TABLEC.C =TABLEB.C
这个句子没有错误,但如果Oracle数据库的配置不够高,会出现明明存在数据,却查询不出结果的情况。这种情况在我们实际的测试过程中出现过几次。
我的处理方式是避免上述写法,修改成如下形式:
SELECT NVL(C1.D,C2.D)
FROM TABLEA
LEFT JOIN TABLEB ON TABLEA.A = TABLEB.A
LEFT JOIN TABLEC C1 ON C1.C = TABLEA.C
LEFT JOIN TABLEC C2 ON C2.C = TABLEB.C