码迷,mamicode.com
首页 > 数据库 > 详细

【ORACLE】 两个order by的SQL使用 UNION 或者 UNION ALL 报错 ORA-00933:sql命令未正确结束

时间:2019-12-25 12:50:45      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:例子   oracle   必须   order by   查询语句   net   ora   结果   需求   

 

在oracle sql中,要求order by是select语句的最后一个语句,而且一个select语句中只允许出现一个order by语句,而且order by必须位于整个select语句的最后。

union操作实际上做了两部分动作:结果集合并 + 排序,

union all只进行结果集简单合并,不做排序,效率比union高 。

例子:    表一:table1  查询语句 : select  * from table1 t1  order by t1. c1  ;

            表二:table2  查询语句 : select  * from table1 t2  order by  t2.c1  . 

  需求:合并表一表二结果集,使用union  或者 union all 都会报错:ORA-00933 sql命令未正确结束

  原因:oracle 认为第一个order by结束后整个select语句就该结束了,但是发现后面没有逗号(;)或斜线(/)结束符,反而后边有 union all 或者 union,即sql语句并未结束,所以报错。

  解决:使用  with ... as ... select ...

     with s1 as (select  * from table1 t1  order by t1. c1 ),

     s2 as ( select  * from table1 t2  order by  t2.c1 )

     select  *  from s1 union all (此处可以换为 union ) select * from s2

 

参考:https://blog.csdn.net/zhx624/article/details/20373785

【ORACLE】 两个order by的SQL使用 UNION 或者 UNION ALL 报错 ORA-00933:sql命令未正确结束

标签:例子   oracle   必须   order by   查询语句   net   ora   结果   需求   

原文地址:https://www.cnblogs.com/crius-dlz/p/12095854.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!