mysql union order by 分别排序问题

两种方式:

第一种:

先各自排序,然后通过临时表嵌套再合并结果,注意排序后面必须加入 limit,否则order by不起作用

SELECT * FROM (SELECT * FROM t1 WHERE id IN (1,3,6) ORDER BY utime DESC limit 5) AS a 
UNION ALL
SELECT * FROM (SELECT * FROM t1 WHERE id IN (2,4,5) ORDER BY utime DESC limit 5) AS b
;
第二种:

通过加入临时列px查出所有结果后,再按px,utime排序

SELECT * FROM(
SELECT 0 AS px,id,NAME,utime FROM (SELECT * FROM t1 WHERE id IN (1,3,6)) AS a 
UNION ALL
SELECT  1 AS px,id,NAME,utime FROM (SELECT * FROM t1 WHERE id IN (2,4,5)  ) AS b
) AS c ORDER BY px,utime DESC

时间: 2024-10-24 16:21:23

mysql union order by 分别排序问题的相关文章

MySQL UNION 与 UNION ALL 语法与用法

1.MySQL UNION 语法 MySQL UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中.语法为: SELECT column,... FROM table1 UNION [ALL] SELECT column,... FROM table2 ... 在多个 SELECT 语句中,对应的列应该具有相同的字段属性,且第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称. 1.1.UNION 与 UNION ALL 的区别 当使用 UNION 时,MySQ

mysql的order by 排序问题

1. order by id desc desc : 降序,也就是从大到小,asc 升序 就是从小到大 2. 当有多个字段排序时: 比如: order by id desc,sort desc; 优先按id 降序排序,如果id相同的话再按sort 降序排序 如果id是主键或者是唯一的 那么后面的按sort排序 毛用都没有, 3. 应该是这样吧,也合服逻辑 呵呵 4.下班 吃饭 约炮 ,结束码农一天的苦逼生活 mysql的order by 排序问题,布布扣,bubuko.com

MySQL中order by中关于NULL值的排序问题

MySQL中order by 排序遇到NULL值的问题 MySQL数据库,在order by排序的时候,如果存在NULL值,那么NULL是最小的,ASC正序排序的话,NULL值是在最前面的. 如果我们想让NULL排在后面,让非NULL的行排在前面该怎么做呢? MySQL数据库在设计的时候,如果字段允许NULL值,那么对该字段进行排序的时候需要注意那些值为NULL的行. 我们知道NULL的意思表示什么都不是,或者理解成"未知"也可以,它与任何值比较的结果都是false, 默认情况下,My

mysql union 详解

Union:作用:把2次或多次查询结果合并起来要求:两次查询的列数一致推荐:查询的每一列,相对应的列类型也一样 可以来自于多张表 多次sql语句取出的列名可以不一致,此时,以第1个sql的列名为准 例一. select user_name,user_email,msg_content from ecs_feedback where msg_status = 1 union select user_name,email,content from ecs_comment where status =

MySQL UNION 操作符

MySQL UNION 操作符 本教程为大家介绍 MySQL UNION 操作符的语法和实例. 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复的数据. 语法 MySQL UNION 操作符语法格式: SELECT expression1, expression2, ... expression_n FROM tables[WHERE conditions]UNION [ALL | DISTINCT]SELE

MySQL UNION 操作符:语法及案例剖析

MySQL UNION 操作符 本教程为大家介绍 MySQL UNION 操作符的语法和实例. 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复的数据. 语法 MySQL UNION 操作符语法格式: SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] S

索引优化来实现MySQL的ORDER BY语句优化

MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度. MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作. 通过索引优化来实现MySQL的ORDER BY语句优化: 1.ORDER BY的索引优化.如果一个SQL语句形如: SELECT [column1],[column2],-. FROM [TABLE] ORDER BY [sort]; 在[sort]这个栏位上建立索引就可以实现利用索引进行order

mysql 中order by 与group by的顺序

mysql 中order by 与group by的顺序 是: select from where group by order by 注意:group by 比order by先执行,order by不会对group by 内部进行排序,如果group by后只有一条记录,那么order by 将无效.要查出group by中最大的或最小的某一字段使用 max或min函数. 例: select sum(click_num) as totalnum,max(update_time) as upd

MySQL中order by的实现 和 by rand() 和优化

“MySQL 里面的order by rand()”是怎么实现的.我们今天来简单说说MySQL里的order by.    几种order by的情况             香格里拉娱乐城    乍一看这个问题好像有点复杂,我们从最简单的case开始看起.    用这个表来说明:(10w行数据) 1.  最简单的order ―― order by索引字段 从explain的结果来看(Extra列),这个语句并不作排序.因为字段a已经是有顺序的.就是按照索引a的顺序依次读pk的值(在这里是隐藏的