0

我在 Oracle 中查询视图时遇到问题。

这是视图 (my_cool_view) 定义:

SELECT *
  FROM mview1 JOIN
       mview2 USING(col_id) 

其中mview1mview2是物化视图。我无法访问此物化视图的定义。我试过这个查询:

select r.title from my_cool_view r;

并得到ORA-00918: column ambiguously defined错误。我的 my_cool_view 中的列子集出现此错误。

如果我运行此查询:

select * from my_cool_view;

一切正常。

您在评论中询问 desc my_cool_view ,抱歉我无法提供架构信息,因为它是机密的。我唯一可以说它包含大约 80 列,并且只有一个 (col_id) 不会导致上述错误。

你有什么想法是什么情况以及如何解决它?

提前致谢。

抱歉误导了你,第一个版本的问题太糟糕了。

4

1 回答 1

2

您可能有 2 个名为 title 的列来自您加入的不同表/视图。如果您选择 *,那么这将起作用,因为重复的标题列将获得不同的别名(如 TITLE1)。当您明确要求标题列之一时,数据库需要知道您想要哪一个,从而引发错误。

只需确保标题列具有不同的别名:

   select EMP.TITLE EMP_TITLE, DEPT.TITLE DEPT_TITLE
   FROM   ...
于 2012-10-31T10:56:38.267 回答