获取表别名,以便在查询结果

时间:2018-03-21 21:43:13

标签: sql oracle oracle11g

在Postgres中,这样的查询:

SELECT a.id, b.id FROM table1 a INNER JOIN table2 b on a.id=b.id;

将返回' deconflicted'列名如:

  

a.id,b.id

但是,在Oracle中,id列只保留其原始名称:

  

id,id

我的问题是我的后续工具被重复的列名混淆了。

在这个例子中,我只列出了2列,但实际上有100列,我宁愿不必全部列出。

有没有办法在不必指定所有列名的情况下执行此操作(有100个')。

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT a.id as 'table1 a', b.id as 'table2 b' FROM table1 a INNER JOIN table2 b on a.id=b.id group by a.id, b.id;

您可以使用as后跟名称命名结果。如果您想使用JOIN,则必须使用GROUP BY,如果您不想要重复值,则必须使用所选项目。

答案 1 :(得分:0)

您可以通过修复id

来解决join的特定问题
SELECT *
FROM table1 a INNER JOIN
     table2 b 
     USING (id);

如果id是唯一重复的列,那么这可以解决您的问题。

答案 2 :(得分:0)

我怀疑不会因为表名(或别名)不是必需的。 例如,以下是适用于Oracle的SQL,但在列命名中没有可用的前缀。

SELECT * FROM 
   (select 1 a, 2 b from dual) 
  join 
   (select 1 a, 3 b from dual) 
  using (a)

但我认为Postgres要求那些FROM子查询是别名的