web-dev-qa-db-ja.com

2つの異なるテーブルに同じテーブルエイリアス(Oracle)

この例には、2つの異なるテーブルに同じテーブルエイリアスが使用されています。これが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.
5
Tom Warfield

Bug 25342699:ANSI JOINの使用と同一のテーブルエイリアスによる誤った結果

バグは「まだ作業中」です。

回避策は明白です。異なるエイリアスを使用してください。

ANSI以外の結合では、期待どおりにエラーがスローされます。

18.1と18.2でも修正されるようです。

3
Balazs Papp