标签:语句 table1 UNION t2 union 报错 SQL order select
在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
标签:语句,table1,UNION,t2,union,报错,SQL,order,select 来源: https://www.cnblogs.com/crius-dlz/p/12095854.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。