如何在Oracle中的select中为两列提供相同的别名?

时间:2016-08-21 06:57:44

标签: oracle

我想从这个选择中创建视图或表格:

Select '12' a, '13' a
From dual;

当我单独运行而没有创建时,它可以正常工作,但是当我把

create or replace view_1
As
Select '12' a, '13' b
From dual;

有错误:

  

重复列名称

2 个答案:

答案 0 :(得分:1)

你不能这样做。别名(列名)在视图中必须是唯一的。

请参阅文档:CREATE VIEW

  

<强>别名

     

指定定义查询选择的表达式的名称   风景。别名的数量必须与表达式的数量相匹配   由视图选择。别名必须遵循命名Oracle的规则   数据库架构对象。 别名在视图中必须是唯一的。

     

如果省略别名,则数据库从中派生出来   查询中的列或列别名。因此,您必须使用   如果查询包含表达式而不是列,则为别名   名。此外,如果视图定义包含,则必须指定别名   约束

答案 1 :(得分:0)

如果你只是写一个SELECT查询,你可以给出相同的&#34; name&#34; (别名)到两列,因为SELECT语句是自包含的并且&#34; final&#34; (它不用于任何进一步的处理)。仍然奇怪 - 为什么你想要两个同名的列 - 但你可以做到。

您可以为表,视图或子查询执行此操作。在所有情况下,您应该能够对结果进行进一步处理(特别是进一步SELECT),现在两列具有相同名称的事实成为致命缺陷。所以Oracle显然不会让你这么做。如果它允许您在视图中使用两个具有相同名称的列,然后从视图中选择a,则应选择a

为什么要对两列使用相同的名称?或者你只是在玩弄并试图了解发生了什么(特别是为什么不同的行为)?我希望它是后者,我希望你现在明白为什么。