Oracle自动重命名列中的列?

时间:2010-09-30 17:08:46

标签: sql oracle alias column-alias

我有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

我不希望列名这样。我希望他们将表名称作为common(或所有列)的名称前缀。我可以解决这个问题:

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

但这意味着每个地方的每个选择都会变得长500行。在oracle中有没有神奇的方法呢?基本上我想编写像

这样的代码
 select t1.* as t1_*, t2.* as t2_*
       from table1 t1,
        inner join table2 t2
        on table1.DD = table2.EE

但当然这不是有效的SQL

4 个答案:

答案 0 :(得分:5)

  

在oracle中有没有神奇的方法呢?

不是我知道的。您的选择相当于:

  1. 解决列命名方案 - 您需要使用ALTER TABLE语句,如:

    ALTER TABLE table_name
         RENAME COLUMN old_name to new_name;
    
  2. 使用列别名

  3. 您可以使用视图来节省工作量和工作量。定义列别名的努力,但这不是推荐的做法,因为在将视图叠加在一起时性能不佳。

答案 1 :(得分:5)

在Oracle SELECT语法中,目前无法根据某些表达式将列别名分配给多个列。您必须为每个列分配别名。

答案 2 :(得分:0)

创建视图是一种选择吗?

您正在使用的软件是什么?我没有在10 *中的SQL * Plus或PL / SQL Developer中看到这种行为。 PL / SQL不允许你在其中构建一个带有这种歧义的游标。

答案 3 :(得分:0)

试试这个

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

正如他之前所说的那样,你需要按照列进行操作