代码之家  ›  专栏  ›  技术社区  ›  bwawok

Oracle是否自动从Select重命名列?

  •  4
  • bwawok  · 技术社区  · 14 年前

    我有两张带有以下字段的表。

    表1

    • AA
    • BB
    • 科科斯群岛
    • DD

    表2

    • AA
    • 科科斯群岛
    • 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
    

    但这意味着每个地方的选择都会延长500行。在Oracle中有没有一种神奇的方法可以做到这一点?基本上我想写我的代码

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

    但这当然不是有效的SQL

    4 回复  |  直到 12 年前
        1
  •  5
  •   vls    14 年前

    在Oracle中 SELECT 语法,当前无法基于某个表达式将列别名分配给多个列。您必须为每个单独的列分配一个别名。

        2
  •  5
  •   OMG Ponies    14 年前

    在Oracle中有没有一种神奇的方法可以做到这一点?

    我不知道。您的选项总数为:

    1. 列命名方案地址-您需要使用如下的alter table语句:

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

    您可以使用视图来节省定义列别名的工作和工作量,但这不是推荐的做法,因为在将视图分层时性能较差。

        3
  •  0
  •   DCookie    14 年前

    创建视图是一个选项吗?

    你使用的软件对你有什么影响?我在SQL*plus或10g中的pl/sql开发人员中没有看到这种行为。pl/sql不会让您构建一个具有这种模糊性的游标。

        4
  •  0
  •   Badmiral    12 年前

    试试这个

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

    如他之前所说,你需要按列来做

    推荐文章