遇到一个不会阻止我的JOIN问题,但我想了解它。
JOIN在数字列上非常基础。它在某些情况下有效,在另一些情况下失败。两列之间的架构定义存在差异。
为了说明问题而发明的例子。
模式
ADDRESS.COUNTRYID NUMBER
COUNTRY.ID NOT NULL NUMBER(38)
加入
JOIN COUNTRY ON COUNTRY.ID=ADDRESS.COUNTRYID works
INNER JOIN COUNTRY ON COUNTRY.ID=ADDRESS.COUNTRYID works
LEFT JOIN COUNTRY ON COUNTRY.ID=ADDRESS.COUNTRYID nonexistent LOB value
请不要评论架构。不是我的。
帮助我了解导致某些案例中LEFT JOIN失败的原因。在大多数情况下,此LEFT JOIN有效。在LEFT JOIN失败的情况下,我尝试了JOIN和INNER JOIN,他们都工作了!这与ADDRESS.COUNTRYID中的数据存储有关吗?由于INNER JOIN起作用,Oracle将ADDRESS.COUNTRYID和COUNTRY.ID视为相同的值。那么为什么同一个键上的LEFT JOIN会因“不存在的LOB值”而失败?