在Oracle里in字句中不能写order by

今天在使用Oracle时一个子查询条件用到了排序,结果遇到了不能正常执行的情况,于是查了一番:

oracle官网给出了subquery的分类:

A subquery in the FROM clause of a SELECT statement is also called an inline view. A subquery in the WHERE clause of a SELECT statement is also called a nested subquery.
在From 语句中出现的子查询被称为 inline view(内联视图),在where 语句中出现的子查询被称为nested subquery(嵌套子查询)。


经测试证明在嵌套子查询中不允许出现order by 语句。例如:
select * from scott.emp
where ename in (select ename from scott.emp order by ename)
会报 “ORA-00907:缺少右括号”的错误。


如果将上面的嵌套子查询再包装一层,成为第二层查询的内联视图。
select * from scott.emp
where ename in (select * from(select ename from scott.emp order by ename))

则可以成功执行。

转自http://blog.sina.com.cn/s/blog_62e7fe6701015154.html

标签: Oracle

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://bjspace.net/post/41

相关推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 抛媚眼 调皮 鄙视 示爱 哭 开心 偷笑 嘘 奸笑 委屈 抱抱 Dog 大兵 威武

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!