首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在select语句中不允许Oracle 22 Joins或以上?奥拉-01445

在select语句中不允许Oracle 22 Joins或以上?奥拉-01445
EN

Stack Overflow用户
提问于 2011-09-16 09:38:11
回答 2查看 5.9K关注 0票数 2

ORA-01445:无法在没有密钥保存表的情况下从连接视图中选择ROWID或示例

我在ORACLE 10g上有一个长的select语句。根据这个错误声明,我在google上看到了一些答案。答案之一是这样说;

*限制连接中的表数,在Oracle9.2.0.5上遇到一个不寻常的错误(4204878/ 3765373/ 3004824)。当在select语句中完成超过22个ANSII联接时,就会发生ORA-01445。

我计算整个select块中的联接数;是23 (在select之后和where子句之后)。具有这个"selec"t语句的SP一直工作得很好,直到我在where子句之后添加了这个新的联接.

简而言之,我已经通过禁用一个现有的join进行了测试,并启用了新添加的join和SP工作。

你认为有什么限制吗?

**我不能告诉你网站的附加信息,因为它总是被StackOverflow的用户抹黑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-16 09:46:50

我碰到过几次这样的虫子。它发生了很多在9i与ANSI连接,我发现它发生频率较少,在10g。

解决方法之一是重写连接以使用“旧”连接同步,特别是APC指出的外部联接:

代码语言:javascript
运行
复制
SELECT *
  FROM a, b
 WHERE a.a_id = b.a_id (+)
票数 7
EN

Stack Overflow用户

发布于 2012-05-04 18:58:35

我只是通过选择在查询中使用的列来解决这个问题。

由此:

代码语言:javascript
运行
复制
select a.column1, b.column3
  from a
  join b on b.column2 = a.column2

对此:

代码语言:javascript
运行
复制
select a.column1, b.column3
  from (select column1, column2 from a) a
  join (select column2, column3 from b) b on b.column2 = a.column2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7442763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档