前两天,在使用Oracle数据库,关联查询时使用left join on 发现并不能展现所有的左表数据,仔细查看数据库表是存在数据的,但是 关联字段存在空的情况,查询出的集合,关联条件为空的数据一整条都丢失了。因为平时使用的是mysql 并没有发现类似情况,所以做个记录。
这里提供一个解决方法,在Oracle中在 Oracle 中,LEFT JOIN 和 LEFT OUTER JOIN 的区别在于对于无法匹配的记录的处理方式。
LEFT JOIN:LEFT JOIN 会返回左边表(主表)的所有记录,而无论是否与右边表(副表)的记录匹配。如果在右边表中没有匹配的记录,则返回的结果集中副表的字段值将为 NULL。
LEFT OUTER JOIN:LEFT OUTER JOIN 同样会返回左边表(主表)的所有记录,但是它会保留无法在右边表(副表)中找到匹配的记录,并将副表的字段值设置为 NULL。
所以,当主表与副表的连接字段在主表中的数据为空时,LEFT OUTER JOIN 会包含主表中的空记录,而 LEFT JOIN 不会包含这些空记录,返回的结果集中将缺少这些行。
总结:oracle中 对于使用使用left join on 出现左表数据缺失情况,可以尝试使用LEFT OUTER JOIN