之前,同事在编写视图的过程中遇到这样了这个错误。我把简化后的语句整理如下:

   1: select

   2: '2016' as nf,

   3: qxdm,

   4: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

   5: from dltb_2016@dblink_td_tdxz m where dlmc='城市'

   6: group by m.qxdm order by m.qxdm

   7:  

   8: union all 

   9:  

  10: select

  11: '2017' as nf,

  12: qxdm,

  13: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

  14: from dltb_2017@dblink_td_tdxz n where dlmc='城市'

  15: group by n.qxdm order by n.qxdm

主要是查询各个管辖区中2016年和2017年地类图斑数据中城市用地的面积,语句分单块均可以执行成功,但是使用UNION后则出现ora-00933错误。

检查了列的数量、数据格式均保持一致,没有不对应的现象。

追查了一下原因,最终发现是union和order by字句引起的。

最终处理方式参考如下:

1、如果排序没必要,可以直接去掉,或者在union后统一排序

   1: select

   2: '2016' as nf,

   3: qxdm,

   4: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

   5: from dltb_2016@dblink_td_tdxz m where dlmc='城市'

   6: group by m.qxdm 

   7:  

   8: union all 

   9:  

  10: select

  11: '2017' as nf,

  12: qxdm,

  13: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

  14: from dltb_2017@dblink_td_tdxz n where dlmc='城市'

  15: group by n.qxdm

或者

   1: select

   2: '2016' as nf,

   3: qxdm,

   4: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

   5: from dltb_2016@dblink_td_tdxz m where dlmc='城市'

   6: group by m.qxdm 

   7:  

   8: union all 

   9:  

  10: select

  11: '2017' as nf,

  12: qxdm,

  13: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

  14: from dltb_2017@dblink_td_tdxz n where dlmc='城市'

  15: group by n.qxdm order by qxdm

2、可以再嵌套一层查询

   1: select * from (

   2: select

   3: '2016' as nf,

   4: qxdm,

   5: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

   6: from dltb_2016@dblink_td_tdxz m where dlmc='城市'

   7: group by m.qxdm order by m.qxdm

   8: )

   9:  

  10: union all 

  11:  

  12: select * from (

  13: select

  14: '2017' as nf,

  15: qxdm,

  16: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

  17: from dltb_2017@dblink_td_tdxz n where dlmc='城市'

  18: group by n.qxdm order by n.qxdm

  19: )

或者

   1: with

   2:  s1 as (

   3:  select

   4:        '2016' as nf,

   5:        qxdm,

   6:        round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

   7:        from dltb_2016@dblink_td_tdxz m where dlmc='城市'

   8:        group by m.qxdm order by m.qxdm

   9:   ),

  10:   s2 as (

  11:   select

  12:      '2017' as nf,

  13:      qxdm,

  14:      round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数

  15:      from dltb_2017@dblink_td_tdxz n where dlmc='城市'

  16:      group by n.qxdm order by n.qxdm

  17:   )

  18:   select * from s1

  19:   union all

  20:   select * from s2;

同时使用Union和Order by问题(ORA-00933错误)解决的更多相关文章

  1. 让UNION与ORDER BY并存于SQL语句当中

    在SQL语句中,UNION关键字多用来将并列的多组查询结果(表)合并成一个结果(表),简单实例如下: SELECT [Id],[Name],[Comment] FROM [Product1] UNIO ...

  2. mysql 错误 1221 Incorrect usage of union and order by

    今天有个项目出现了问题 问题原因是union和order by 的问题.关于这个问题的解决方案可以猛击下面的链接. http://blog.csdn.net/gtuu0123/article/deta ...

  3. ORA-00933 UNION 与 ORDER BY

    原文:http://blog.csdn.net/lwei_998/article/details/6093807 The UNION operator returns only distinct ro ...

  4. mysql中的union和order by、limit

      我有一个表 CREATE TABLE `test1` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(20) N ...

  5. MySQL中union和order by一起使用的方法

    MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明.首先看下面的t1表. 1.如果直接用如下sql语句是会报错:Incorrect usage ...

  6. MySql union与order by

    [MySql union与order by] 如果您想使用ORDER BY或LIMIT子句来对全部UNION结果进行分类或限制,则应对单个地SELECT语句加圆括号,并把ORDER BY或LIMIT放 ...

  7. MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)

    我在一个业务中采用了按月的分表策略,当查询的条件跨月的时候,使用了union all汇总2个表的数据,并按插入时间倒序排列.查询并不复杂,但是当执行的时候却报错了. SELECT * FROM `ta ...

  8. union 和order by 使用时排序不正确

    静态专题和APP版专题(order by不起作用): [query] sql=(select sp_f13577,sp_f13576 from sp_t113 where url_1 not like ...

  9. mysql Incorrect usage of UNION and ORDER BY 错误备忘

    出现这个错误的语句是酱紫的 select xxx from aaa order by xxx union all select yyy from bbb order by yyy 错误原因居然是,如果 ...

随机推荐

  1. sql基本查询语句

    查询语句的五中字句:where(条件查询),having(筛选),group by(分组),order by(排序),Limit(限制结果数) 一 单表查询 1.查询指定列:select 列名 fro ...

  2. js中的iterable用法

    iterable字面意思:可迭代的,可重复的 . 遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Se ...

  3. python测试开发django-57.xadmin选项二级联动

    前言 当我们选择项目分类的时候,一个项目下关联多个模块,同时有这两个选项框的时候,需要实现选中一个项目,模块里面自动删除出该项目下的模块,如下图这种 解决基本思路: 1.写个jqeury脚本监听cha ...

  4. mysql 函数应用

    mod 取余是用函数mod(numer1,number2),其返回的值为其余数值 如:mod(id,2) = 1 返回id号是奇数的id Email后缀提取 emailorg=RIGHT(EMail, ...

  5. 使用iperf测试网卡吞吐性能

    原 使用iperf测试网卡吞吐性能 2018年12月17日 12:38:41 lancewoo 阅读数:138   首先配置待测试的两个网卡的网络地址到同一网段,保证ping对方的IP地址时可以通.两 ...

  6. 自定义spring参数注解 - 打破@RequestBody单体限制

    本文主要描述怎样自定义类似@RequestBody这样的参数注解来打破@RequestBody的单体限制. 目录1 @RequestBody的单体限制2 自定义spring的参数注解3 编写sprin ...

  7. 微信小程序生成指定页面小程序码海报图片分享思路总结

    本博客主要说下思路,具体代码不贴 1.考虑到组件复用,所以我把它做成一个自定义的组件 <my-poster id="getPoster" avater="{{ima ...

  8. Activity class {com.../com....MainActivity} does not exist.

    报错信息如上图所示,解决步骤: 1. 首先是检查这个MainActivity.java是不是真的存在,且包名和路径无误: 2. 如果文件存在,且包名和路径没有问题,那么就打开你项目所在的/androi ...

  9. 【jQuery:遍历同样class的全部值,遍历某一列td的值】

    jsp代码: Html代码 <c:forEach var="main" items="${mainPage.list }"> <tr> ...

  10. JAVAWEB开发之JSTL标签库的使用、 自己定义EL函数、自己定义标签(带属性的、带标签体的)

    JSTL  JSTL简单介绍: JSTL的全称:JSP Standard Tag Library,JSP标准标签库 JSTL的作用:   提供给Java Web开发者一个标准通用的标签函数库   和E ...