热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

OracleSQL“列定义不明确”,仅使用“FETCHFIRSTnROWS”

如何解决《OracleSQL“列定义不明确”,仅使用“FETCHFIRSTnROWS”》经验,为你挑选了1个好方法。

我有一个SELECT A.ID, B.ID FROM A, B很好的查询。一旦添加FETCH FIRST n ROWS ONLY到它,查询就会失败并显示错误消息

SQL错误[918] [42000]:ORA-00918:列定义不明确

据我了解,该错误指的是不明确的SELECT子句,不应由引起FETCH FIRST n ROWS ONLY

我会错过一些可以证明这种行为合理的东西吗?还是这是一个错误?

我知道在指定显式列别名时可以忽略此行为。我想知道,为什么SELECT A.ID, B.ID FROM A, B有效,而SELECT A.ID, B.ID FROM A, B FETCH FIRST 10 ROWS ONLY没有。

Oracle版本是12.1.0.2.0



1> Tejash..:

这在oracle文档中有记录:

对row_limiting_clause的限制

如果选择列表包含具有相同名称的列,并且您指定row_limiting_clause,则将发生ORA-00918错误。无论名称相同的列是在同一表中还是在不同表中,都会发生此错误。您可以通过为名称相同的列指定唯一的列别名来解决此问题。

即使SELECT查询有效,FETCH FIRST|NEXT但如果两个列名相同,使用后,它将引发错误。

您应该为SELECT子句中的所有列分配不同的别名。


推荐阅读
author-avatar
cl357_475
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有