我正在尝试从表中进行选择,我的问题是此表中的某些列(外键)可以为null .
这些外键中的2个是独占的,如果其中一个具有数据,则另一个将为空,反之亦然 . 因此,当我尝试编写 where
子句时,其中一个将始终为null并且我无法检索任何数据 .
例:
Select
t1.col1, t1.col2, t1.pk1, t2.col3, t2.col4, t2.pk2, t3.col5, t3.pk3
from
t1, t2, t3
where
t2.pk2 = t1.pk2
and t3.pk3 = t1.pk3
其中一个子句总是错误的,因为其中一个列在table1上始终为null . 我理想的解决方案是在表1的值为null的情况下使特定的where子句被忽略,但我不知道该怎么做 .
提前致谢 .
1 回答
改为使用LEFT JOIN:
通过使用
INNER JOIN
,您're filtering the records that don' t满足所有JOIN
条件 .OUTER JOIN
将返回外表的NULL
值(如果是LEFT JOIN
,右侧表),则不满足JOIN
条件 .作为旁注,您不应该在
FROM
子句中使用逗号 . 这个旧的隐式JOIN
语法已被弃用over 25 years ago!