【问题标题】:Is there way to get table name reference before column names in Oracle?有没有办法在 Oracle 中的列名之前获取表名引用?
【发布时间】:2019-11-21 12:52:43
【问题描述】:

我有两个表有许多相同的列名,所以当我加入表时,我需要在列名之前添加表名。有什么方法可以在列名之前获取表名引用,而无需在 select 子句中的每一列之前键入它?

在此示例中,两个表中都有很多列,其中许多列具有相同的名称,因此我需要编写 TABLE2。在选择的每一列之前。有没有更简单的添加方法?

SELECT TABLE1.column1, TABLE2.column2, TABLE2.column3, TABLE2.column4,...
FROM TABLE1, TABLE2
WHERE TABLE1.column1 = TABLE2.column1;

【问题讨论】:

  • 唯一的方法是在每个表中设置一个别名...table1 as a, table2 as b 并使用a.column = b.column
  • 您的示例没有重复的列名,因此它没有传达任何有用的信息。
  • @Roy 是的,使用表别名;但是您的代码示例在语法上是无效的,因为 Oracle 在表别名之前没有使用 AS 关键字。
  • 今日提示:切换到现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),如果需要更容易转换为外连接

标签: sql oracle


【解决方案1】:

使用表别名:

SELECT t1.column1,
       t2.column2,
       t2.column3,
       t2.column4 --, ...
FROM   TABLE1 t1
       INNER JOIN TABLE2 t2
       ON ( t1.column1 = t2.column1 );

(并且使用 ANSI 连接语法而不是旧的 Oracle 逗号连接语法,因为它使关系更加清晰)

【讨论】:

    猜你喜欢
    • 2020-02-29
    • 2023-03-16
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    相关资源
    最近更新 更多