1、SQL1如下

SELECT

aa.*

FROM

apas_smoke aa

WHERE

STATUS = 0

AND aa.area_id = 'd61523dda339441f80008634c6b91f60'

AND aa.type = '3'

AND to_days( create_time ) = to_days(

now())

ORDER BY

CAST( aa.smoke_number AS UNSIGNED ) ASC

查询结果如下,smoke_number 顺序为3,4

2、sql2如下:

SELECT

bb.*

FROM

apas_smoke bb

WHERE

bb.STATUS = 0

AND bb.area_id = 'd61523dda339441f80008634c6b91f60'

AND bb.type = '1'

AND to_days( create_time ) = to_days(

now())

ORDER BY

CAST( bb.smoke_number AS UNSIGNED ) ASC

查询结果如下,smoke_number顺序为1,2

3、但是当使用UNION后,SQL如下

( SELECT

aa.*

FROM

apas_smoke aa

WHERE

STATUS = 0

AND aa.area_id = 'd61523dda339441f80008634c6b91f60'

AND aa.type = '3'

AND to_days( create_time ) = to_days(

now())

ORDER BY

CAST( aa.smoke_number AS UNSIGNED ) ASC

) UNION

(

SELECT

bb.*

FROM

apas_smoke bb

WHERE

bb.STATUS = 0

AND bb.area_id = 'd61523dda339441f80008634c6b91f60'

AND bb.type = '1'

AND to_days( create_time ) = to_days(

now())

ORDER BY

CAST( bb.smoke_number AS UNSIGNED ) ASC

)

查询结果,如下,smoke_number顺序与3,4,2,1  与预期的顺序  3,4,1,2不一致。

**原因:union(all)会使order by失效,解决办法,加limit

4、最终SQL

(

SELECT

aa.*

FROM

apas_smoke aa

WHERE

STATUS = 0

AND aa.area_id = 'd61523dda339441f80008634c6b91f60'

AND aa.type = '3'

AND to_days( create_time ) = to_days(

now())

ORDER BY

CAST( aa.smoke_number AS UNSIGNED ) ASC

LIMIT 2

)

UNION

( SELECT

bb.*

FROM

apas_smoke bb

WHERE

bb.STATUS = 0

AND bb.area_id = 'd61523dda339441f80008634c6b91f60'

AND bb.type = '1'

AND to_days( create_time ) = to_days(

now())

ORDER BY

CAST( bb.smoke_number AS UNSIGNED ) ASC

LIMIT 2

)

查询结果:

问题解决。

mysql5.6 排序失效_mysql 使用union(all) + order by 导致排序失效相关推荐

  1. mysql left join 索引失效_MySQL索引列上做操作导致索引失效案例分析

    索引列上做操作导致索引失效 通常我们认为只要建立索引就可以万事大吉,以为只要建立就一定会使用到,可其实在索引列上的计算.函数.类型转换都可能导致索引失效,所以我们不仅要会创建索引,更重要的是如何正确的 ...

  2. mysql联合索失效_mysql 联合索引生效的条件、索引失效的条件

    1.联合索引失效的条件 联合索引又叫复合索引.两个或更多个列上的索引被称作复合索引. 对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引 ...

  3. mysql模糊查询索引失效_MySql学习笔记(九):索引失效

    数据准备:CREATE TABLE `t_blog` ( `id` int(11) NOT NULL auto_increment, `title` varchar(50) default NULL, ...

  4. 查询排序_MySQL使用UNION连接两个查询排序失效

    概述 UNION 连接数据集关键字,可以将两个查询结果集拼接为一个,会过滤掉相同的记录. UNION ALL 连接数据集关键字,可以将两个查询结果集拼接为一个,不会过滤掉相同的记录 今天在接到一个需求 ...

  5. mysql索引排序算法_MySQL中利用索引对数据进行排序的基础教程

    MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描.利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排序操作.当索引的顺序与ORDER BY中的列顺 ...

  6. mysql union (all) 后order by的排序失效问题解决

    mysql union (all) 后order by的排序失效问题解决 参考文章: (1)mysql union (all) 后order by的排序失效问题解决 (2)https://www.cn ...

  7. mysql union如何排序_Mysql中UNION用法与排序

    最近也是在写项目中碰到的这个问题,需要将两个SELECT查询结果组合起来进行分组排序,想到了用union方法,用TP的union操作根本无法完成复杂的union操作,于是搜罗了一下,先说一下union ...

  8. mysql部门人员排序设计_MySQL数据库访问性能优化

    MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...

  9. mysql字符串等于失效_MySql整型索引和字符串索引失效或隐式转换问题

    问题概述 写代码的时候,有一段sql,表示该sql存在隐式转换,不走索引. 经过测试排查后,发现是类型varchar的字段, 我使用条件传入了数值型的值. 问题重现 首先我们先创建一张用户表test_ ...

最新文章

  1. laravel artisan
  2. redis编译安装:make 的新错误--collect2: ld returned 1 exit status
  3. RabbitMQ实现工作队列
  4. 用多态和组合替换多个条件
  5. Dll注入技术之劫持注入
  6. php core模块,module.php
  7. 遇到一个在linux下无法跨网段发送接收广播包的问题
  8. TensorFlow中文社区
  9. python可以用del释放资源_Python中垃圾回收和del语句详解
  10. do while新用法--方便数据验证时跳出
  11. mybatis逆向工程maven版本idea工具
  12. 使用Fresco实现简单的显示一张图片
  13. 十款真正的编程游戏软件
  14. 冯乐乐之二 shader的数学
  15. HC-05嵌入式蓝牙串口通讯
  16. ADNI影像数据解析及下载
  17. javascript简单介绍总结(二)
  18. c++哈利波特游戏(流行的版本的破解版)
  19. pythonrestapicctv_Python Web服务(15) 持续更新
  20. 3ds max基础知识

热门文章

  1. python爬取公交车站数据_Python爬虫实例_城市公交网络站点数据的爬取方法
  2. react-native与原生三种交互模式
  3. 基于JAVA+Servlet+JSP+MYSQL的毕业生就业管理系统
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的培训中心管理系统
  5. [******] 树问题:普通二叉树的创建与遍历
  6. 在windows平台下搭建Django项目虚拟环境
  7. w2008 R2 401 - 未授权: 由于凭据无效,访问被拒绝。
  8. 百分点零售行业大数据解决方案
  9. block的界面间传值的使用
  10. 关于Bugzilla WebService接口