4

次のフィールドを持つ2つのテーブルがあります。

表1

  • AA
  • BB
  • CC
  • DD

表2

  • AA
  • CC
  • EE

クエリ

Select t1.*, 
       t2.*
  from table1 t1,
  join table2 t2 on table1.DD = table2.EE

私のデータ列は次の列名で返されます:

AA, BB, CC, DD, **AA_1**, **CC_1**, EE

そのような列名は望ましくありません。共通 (またはすべての列) の名前の前にテーブル名を付けたいと思います。私はこれを修正することができます:

select t1.AA as t1_AA, t1.BB as t1_BB, t1.CC as t1_CC, t1.DD as t1_DD, 
 t2.AA as t2_AA, t2.CC as t2_CC, t2.EE as t2_EEE
   from table1 t1,
    inner join table2 t2
    on table1.DD = table2.EE

しかし、それはどこでもすべての select が 500 行長くなることを意味します。オラクルでこれを行う魔法の方法はありますか? 基本的に私は自分のコードを次のように書きたい

 select t1.* as t1_*, t2.* as t2_*
       from table1 t1,
        inner join table2 t2
        on table1.DD = table2.EE

もちろん、それは有効な SQL ではありません

4

4 に答える 4

5

OracleSELECT構文では、現在、何らかの式に基づいて列エイリアスを複数の列に割り当てる方法はありません。個々の列にエイリアスを割り当てる必要があります。

于 2010-09-30T19:51:07.243 に答える
5

オラクルでこれを行う魔法の方法はありますか?

私が知っているわけではありません。オプションは次のとおりです。

  1. 列の命名スキームに対処します。次のような ALTER TABLE ステートメントを使用する必要があります。

    ALTER TABLE table_name
         RENAME COLUMN old_name to new_name;
    
  2. 列のエイリアスを使用する

ビューを使用して、列のエイリアスを定義する作業と労力を節約できますが、ビューを互いに重ねるとパフォーマンスが低下するため、推奨される方法ではありません。

于 2010-09-30T17:16:36.537 に答える
0

これを試して

 select t1.AA "t1_AA", t2.AA "t2.AA"
 from table1 t1,
 inner join table2 t2
 on table1.DD = table2.EE

彼が前に言ったように、あなたはコラムごとにそれをする必要があります

于 2013-02-15T16:42:26.813 に答える
0

ビューの作成はオプションですか?

これを行うために使用しているソフトウェアは何ですか? 10g の SQL*Plus または PL/SQL Developer では、この動作は見られません。PL/SQL では、このあいまいさを含むカーソルを作成できません。

于 2010-09-30T19:59:54.200 に答える