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

   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. keepalived+mysql backup服务器可ping通过vip但telnet vip+3306失败问题

    环境: OS:CentOS 7_X64 数据库:mysql-5.7 MASTER:192.168.119.23 BACKUP:192.168.119.24 VIP:192.168.119.138 ke ...

  2. 【数位dp】Beautiful Numbers @2018acm上海大都会赛J

    目录 Beautiful Numbers PROBLEM 题目描述 输入描述: 输出描述: 输入 输出 MEANING SOLUTION CODE Beautiful Numbers PROBLEM ...

  3. .NET分布式缓存Memcached从入门到实战

    一.课程介绍 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是 ...

  4. C# Xamarin For Android自动升级项目实战

    一.课程介绍 “明人不说暗话,跟着阿笨一起玩Xamarin”,本次分享课程阿笨将带来大家一起学习Xamarin For Android系列<C# Xamarin For Android自动升级项 ...

  5. [Asp.net core]使用ssh命令发布asp.net core项目

    命令 # 移除之前发布的包 rm -rf ./.Publish rm -rf ./Wolfy.Blog.tar.gz # 编译并发布 将发布包打包在.Publish目录下 -o "../.P ...

  6. Android Studio提示 Connection reset

    解决步骤: 1:Android studio开发工具:File -> Invalidate caches / Restart:选择Invalidate and Restart关闭 Android ...

  7. 异常处理汇总 ~ 修正果带着你的Code飞奔吧!

    异常处理汇总-运维系列 http://www.cnblogs.com/dunitian/p/4522983.html 异常处理汇总-开发工具  http://www.cnblogs.com/dunit ...

  8. Python计算分位数

    Python计算分位数    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/gdkyxy2013/article/details/80911514 ...

  9. 使用sshfs将远程目录挂载到本地

    使用sshfs将远程目录挂载到本地 转自:http://blog.sina.com.cn/s/blog_6561ca8c0102vc2u.html 在Linux下我们通常使用ssh命令来登录远程Lin ...

  10. iOS 获取IP

    #import <ifaddrs.h> //获取IP #import <arpa/inet.h> //只能获取WIFI下的IP地址 + (NSString *)getIPAdd ...