我在Oracle中查询视图时遇到问题。
以下是视图(my_cool_view)定义:
SELECT *
FROM mview1 JOIN
mview2 USING(col_id)
其中 mview1 和 mview2 是物化视图。我无法访问此物化视图的定义。我试过这个问题:
select r.title from my_cool_view r;
并且 ORA-00918:列模糊定义 错误。我在my_cool_view中的列子集中遇到此错误。
如果我运行此查询:
select * from my_cool_view;
一切正常。
您在评论中询问desc my_cool_view,抱歉我无法提供架构信息,因为它是保密的。我唯一可以说它包含大约80列,只有一个(col_id)不会导致上述错误。
您有什么想法以及如何解决这个问题吗?
提前致谢。
很抱歉误导你,问题的第一个版本太糟糕了。
答案 0 :(得分:2)
您可能有2列名称来自您加入的不同表/视图中的标题。如果选择*,那么这将起作用,因为重复的标题列将获得不同的别名(如TITLE1)。当您明确要求其中一个标题列时,数据库需要知道您想要哪一个,从而抛出错误。
只需确保标题列具有不同的别名:
select EMP.TITLE EMP_TITLE, DEPT.TITLE DEPT_TITLE
FROM ...