sql >> データベース >  >> RDS >> Oracle

Oraclesql派生テーブル-オプションのエイリアシング

    一意に定義されていない列を参照している場合にのみ、エイリアスを作成する必要があります。これは、列が複数のテーブル/派生テーブルに存在することを意味します。参照は、selectステートメントまたは結合にある可能性があります。すべての列が一意である場合、エイリアスは必要ありません。

    PL / SQLのIntellisenseに役立つため、わかりやすくするために常にエイリアスを作成することを好みます。

    --ALIAS needed, because the 'a' column referenced is not unique
    --this will throw an error
    select a, a, b, c
      from (select 'A1' as a, 'B1' as b, 'C1' as c from dual),
           (select 'A2' as a from dual);
    --this will not throw an error
    select t1.a, t2.a, b,c
      from (select 'A1' as a, 'B1' as b, 'C1' as c from dual) t1,
           (select 'A2' as a from dual) t2;
    ;
    
    --ALIAS not needed for join, because all referenced columns are unique
    select a, b, c, d, e, f
      from (select 'A' as a, 'B' as b, 'C' as c from dual)
      join (select 'D' as d, 'E' as e, 'F' as f from dual)
        on a = d;
    
    --ALIAS needed for join, because the 'x' column referenced is not unique
    --this will throw an error
    select a
      from (select 'A' as a, 'B' as b, 'C' as c, 'X' as x from dual)
      join (select 'D' as d, 'E' as e, 'F' as f, 'X' as x from dual)
        on x = x;
    --this will not throw an error
    select a
      from (select 'A' as a, 'B' as b, 'C' as c, 'X' as x from dual) t1
      join (select 'D' as d, 'E' as e, 'F' as f, 'X' as x from dual) t2
        on t1.x = t2.x;
    


    1. 私のspring+hibernateアプリはjdbc接続を閉じません

    2. MYSQL / PHPで重複するTEXTフィールドをチェックするための最良の方法は何ですか?

    3. トランザクション内のテーブルを切り捨てる

    4. plsqlを使用したユーザー定義のカスタム集計関数