两个不同表的相同表别名 (Oracle)

Tom*_*eld 5 oracle oracle-11g-r2 alias oracle-12c table

此示例具有用于两个不同表的相同表别名。我不明白为什么 Oracle 允许这样做,如果允许,结果如何有意义。

create table Table_A (x number);
create table Table_B (x number);
insert into Table_A values (1);
insert into Table_A values (2);
insert into Table_B values (2);
insert into Table_B values (3);

select * from Table_A ;
         X
----------
         1
         2
2 rows selected.

select * from Table_B ;
         X
----------
         2
         3
2 rows selected.

select *
  from Table_A  T
  join Table_B  T
    on T.x = T.x;
         X          X
---------- ----------
         2          2
         2          2
         3          3
         3          3
4 rows selected.
Run Code Online (Sandbox Code Playgroud)

Bal*_*app 4

Bug 25342699:使用 ANSI JOIN 和相同的表别名会产生错误的结果(需要登录)

Oracle 支持说明的公开版本非常有限。这是引用上述错误的注释(登录后在完整版本中可见)。

该错误“仍在处理中”。

解决方法很明显:使用不同的别名。

非 ANSI 连接会按预期抛出错误。

似乎在 18.1 和 18.2 中也得到了修复。