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 ...
随机推荐
- 使用tcpdump观察IPV4头部结构
sudo tcpdump -nt -i lo #抓取本地回路上的数据包 先运行上面的命令,然后再另一个终端运行下图所示的命令: [root@linux 5]# sudo tcpdump -nt -i ...
- oracle查询数据库最大连接数等信息
.当前的数据库连接数 select count(*) from v$process where program='ORACLE.EXE(SHAD)'; .数据库允许的最大连接数 select valu ...
- 数据库 数据库SQL语句四
多表查询 等值连接 --查询员工信息,员工号,姓名,月薪,部门名称 select e.empno,e.ename,d.dname from emp e,dept d where e.deptno=d. ...
- sql 使用整理
今天使用视图查询东西,为了方便直接select * 查出来的都行全部都错乱了,看来sql 超过20个以上的字段为了效率和安全,禁止用select * -------------查一个表的所有字段的-- ...
- Application应用程序级变量
对于每一个网站访问用户都要访问的变量,应该将它设为________变量.(选择1项) A. Session B. Reques C. Response D. Application 解答:D
- SVN入门 服务器VisualSVN Server和客户端TortoiseSVN安装
Subversion是一个版本控制系统,相对于的RCS.CVS,采用了分支管理系统,它的设计目标就是取代CVS.互联网上免费的版本控制服务多基于Subversion. 一.SVN工作原理 SVN(Su ...
- spring配置文件头部配置解析
http://blog.csdn.net/f_639584391/article/details/50167321
- python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
- mac下MAMP的安装和使用
详情博客:https://my.oschina.net/laiconglin/blog/514139
- Linq------错误: Unable to determine the principal end of an association between the types
[Table("bma_stores")] public class Store { //加上即可 [Required] public virtual Product Produc ...