我正在使用Oracle 10g(XE 10.2.0.1.0),并找到一个我不理解的行为:
原文链接:https://www.f2er.com/oracle/205660.htmlselect * from employees manager join employees worker on MANAGER.EMPLOYEE_ID = WORKER.MANAGER_ID join departments on DEPARTMENTS.manager_id = 108 where department_id = 100 ;
问题是我认为Oracle应该抱怨where子句中department_id的含糊不清,因为它是表员工和部门中的一个列.事实是在Oracle 10g中,事实并非如此,结果表明它将department_id解释为部门中的部门.但是,如果我注释掉第二个连接语句(上面第4行),Oracle会按预期抱怨“ORA-00918:列模糊定义”.
那么,有人可以帮助解释如何在Oracle 10g中定义歧义吗?或许这是一个10g的错误?
BTW:这些表是在Oracle 10g中捆绑的默认HR模式中定义的.
更新:刚刚找到相关帖子:
Why does Oracle SQL mysteriously resolve ambiguity in one joins and does not in others