mysql union (all) 后order by的排序失效问题解决
上sql
select * FROM (
SELECT
SUM(c.overtime_num) AS delay_num,
ROUND((SUM(c.total_num) - SUM(c.overtime_num))*100/SUM(c.total_num),2) rate ,
'全网' as reaCodeFROM calc_vmap_repair_timely_rate_mon_stat c
WHERE c.`type` = 22
and c.MONTH BETWEEN '2019-01' AND '2019-01'
) t1 UNION ALL SELECT t2.* FROM (
select tmp.* FROM (
SELECT SUM(c.overtime_num) AS delay_num,
ROUND((SUM(c.total_num) - SUM(c.overtime_num))*100/SUM(c.total_num),2) rate ,
c.motorcade_area_code as reaCodeFROM calc_vmap_repair_timely_rate_mon_stat c
WHERE c.`type` = 22
and c.MONTH BETWEEN '2019-01' AND '2019-01'
group by c.motorcade_area_code
) tmp order by tmp.rate asc
) t2
单独执行union all下面的结果如下:
单独执行union all上面的结果如下:
为了保证排序不乱,按照网上解决方案:
可是结果竟然还是:
没能解决问题。 加上limit问题也是可以解决的。
真正解决方案:
SELECT * FROM( SELECT
SUM(c.overtime_num) AS delay_num,
ROUND((SUM(c.total_num) - SUM(c.overtime_num))*100/SUM(c.total_num),2) rate ,
'全网' AS reaCode,
0 AS od
FROM calc_vmap_repair_timely_rate_mon_stat c
WHERE c.`type` = 22
and c.MONTH BETWEEN '2019-01' AND '2019-01' UNION ALL SELECT SUM(c.overtime_num) AS delay_num,
ROUND((SUM(c.total_num) - SUM(c.overtime_num))*100/SUM(c.total_num),2) rate ,
c.motorcade_area_code AS reaCode,
1 AS od
FROM calc_vmap_repair_timely_rate_mon_stat c
WHERE c.`type` = 22
and c.MONTH BETWEEN '2019-01' AND '2019-01'
group by c.motorcade_area_code ) con ORDER BY od, rate;
先查询后排序
union 前的排序与union 后的顺序,采用加一个字段od来保证,然后再按rate排序则解决了以上的问题。
mysql union (all) 后order by的排序失效问题解决的更多相关文章
- IE6、7 a链接内图片加滤镜后导致a标签链接失效问题解决
今天在项目中遇到一个ie6.7浏览器下a链接失效的问题,查询大量资料,最终找到完美的解决方案,如下: 解决方法: 为a标签加样式{*background:url(#);*zoom:1;} 为img外部 ...
- mysql union 与 union all 语法及用法
1.mysql union 语法 mysql union 用于把来自多个select 语句的结果组合到一个结果集合中.语法为: select column,......from tabl ...
- mysql如何用order by 自定义排序
mysql如何用order by 自定义排序 id name roleId aaa bbb ccc ddd eee ,MySQL可以通过field()函数自定义排序,格式:field(value,st ...
- Mysql Order By 字符串排序,mysql 字符串order by
Mysql Order By 字符串排序,mysql 字符串order by ============================== ©Copyright 蕃薯耀 2017年9月30日 http ...
- MySql union与order by
[MySql union与order by] 如果您想使用ORDER BY或LIMIT子句来对全部UNION结果进行分类或限制,则应对单个地SELECT语句加圆括号,并把ORDER BY或LIMIT放 ...
- mysql order by 中文 排序
mysql order by 中文 排序 1. 在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在MySQL的很多版本中都 ...
- mysql 数据操作 单表查询 查询排序: order by
如果不指定排序 默认是按照id字段 从小到大排序的 升序 mysql> select * from employee; +----+------------+--------+-----+-- ...
- mysql select 无order by 默认排序 出现乱序的问题
原文:mysql select 无order by 默认排序 出现乱序的问题 版权声明:感谢您的阅读,转载请联系博主QQ3410146603. https://blog.csdn.net/newMan ...
- SQL 语句中union all和order by同时使用
最近做的一个财物管理系统中查询过期或逾期的存储过程,返回 “财物所属的案件名称”,“财物名称”,“财物编号”,“过期或逾期时间”(超期或逾期前7天开始预警). 遇到“union all ...
随机推荐
- Ubuntu 12.04下LAMP环境的搭建
首先 apt-get install update 一下 sudo apt-get install update 安装MySQL 的服务端和客户端 sudo apt-get install mysql ...
- MySQL线程池总结
线程池是Mysql5.6的一个核心功能,对于服务器应用而言,无论是web应用服务还是DB服务,高并发请求始终是一个绕不开的话题.当有大量请求并发访问时,一定伴随着资源的不断创建和释放,导致资源利用率低 ...
- httpoxy 漏洞预警及修复方案
影响范围 PHP.Go.Python等开启CGI(Client)模式的脚本语言 Language 环境依赖 HTTP Client PHP php-fpmmod_php Guzzle 4+Artax ...
- js实现div的置底
//-------------置底的div---------------------- <div class="mui-content lv-mrcd" id=" ...
- C++ new delete操作符
//new delete操作符 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; /* 1.n ...
- PyCharm中设置console端的字体和大小
file--->setting,选择console Font,右侧primary font即设置console端的字体和大小
- WinDbg 解决Font.ToLogFont AccessViolationExcetion
有个程序总是在windows 2003 server 异常退出. 并且, 查看调用栈也肯奇怪, 应该是很正常的调用. 怀疑是堆溢出. 开启heap trace : C:\Program Files\ ...
- 解决myeclipse启动慢的问题
去掉拼写检查:windows->preferences->General->Editors->Text Editors->Spelling 将"Enable s ...
- PowerShell----Automatic_Variables(预定义变量)
以下这些变量是由powershell创建和维护的.ls Variable: 可以获取到所有默认的变量, 每个版本的Powershell可能有差异 $$包含会话所收到的最后一行中的最后一个令牌. $? ...
- 多线程环境下调用 HttpWebRequest 并发连接限制
.net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 windows xp , windows 7 下默认是2,在服务器操作 ...