MySQL 之union all 与 order by 同时出现问题
最近项目中有一个小需求,用到了order by和 union,遇到了一点小问题,相信大家以后也会有类似的需求,与大家分享。
先说一下我们的需求:就是在分页查询活动信息的时候,要求的显示格式是先显示未结束的活动按照最近要结束的放在前面,然后显示已经结束的活动,按照最新结束的在上面,这样的需求自然而然的想到了union all,union all和union的区别大家应该都知道就是union去重,union all不去重,开始写的语句是这样的(上代码有点乱,大家凑活着看吧~~~)
(select t.*,d.* from
(select a.id activeId,a.name activeName,a.base_gold baseGold,
a.start_time startTime,a.end_time endTime,a.valid, betLog.num,
betLog.u_center_id uid from t_user_bet_log betLog
left join t_active a on betLog.active_id = a.id group by activeId,uid )t
left join t_draw d on t.activeId = d.active_id
WHERE t.uid= 3000 AND t.valid=1 ANDt.startTime<=now() AND t.endTime >= now() AND ISNULL(d.id) order by t.endTime asc)
union all
(select t.*,d.* from
(select a.id activeId,a.name activeName,a.base_gold baseGold,
a.start_time startTime,a.end_time endTime,a.valid,
betLog.num,betLog.u_center_id uid from t_user_bet_log betLog
left join t_active a on betLog.active_id = a.id group by activeId,uid)t
left join t_draw d on t.activeId = d.active_id
WHERE t.uid= 3000 AND t.valid=1 AND ((t.endTime<now()) OR (d.active_team_id=-1))order by t.endTime desc)
加粗的是主要逻辑,单独执行子查询顺序都是正确的,但是当两个子查询union all的时候就会出现顺序混乱的情况,为了一下兆满说union all和union都是会影响子查询的输出结果,所以要将语句改造,下面是我改造的语句,主要思想就是先给两个子查询排序,让union all 不会影响子查询的顺序,再处理一下时间变成自己需要的输出形式:
select * from(
(select t.*,d.*,10 'idx',endTime - now() time1 from
(select a.id activeId,a.name activeName,a.base_gold baseGold,
a.start_time startTime,a.end_time endTime,a.valid, betLog.num,
betLog.u_center_id uid from t_user_bet_log betLog
left join t_active a on betLog.active_id = a.id group by activeId,uid )t
left join t_draw d on t.activeId = d.active_id
WHERE t.uid= 3000 AND t.valid=1 ANDt.startTime<=now() AND t.endTime >= now() AND ISNULL (d.id))
union all
(select t.*,d.*,20 'idx',now()-endTime time1 from
(select a.id activeId,a.name activeName,a.base_gold baseGold,
a.start_time startTime,a.end_time endTime,a.valid,
betLog.num,betLog.u_center_id uid from t_user_bet_log betLog
left join t_active a on betLog.active_id = a.id group by activeId,uid)t
left join t_draw d on t.activeId = d.active_id
WHERE t.uid= 3000 AND t.valid=1 AND ((t.endTime<now()) OR (d.active_team_id=-1)))
order by idx,time1 asc)ttt
上代码就是有点乱。。。一个asc和一个desc,小处理了一下都变成了asc的。
MySQL 之union all 与 order by 同时出现问题相关推荐
- mysql中union all的order by问题
今天写mysql数据库代码的时候,发现union的结果不是预期的 $stime = date("H:i:s"); $sql1 = "select * from T whe ...
- mysql union (all) 后order by的排序失效问题解决
mysql union (all) 后order by的排序失效问题解决 参考文章: (1)mysql union (all) 后order by的排序失效问题解决 (2)https://www.cn ...
- mysql中union 查询
mysql中union 查询 UNION ALL只是简单的将两个结果合并后就返回.这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了. 从效率上说,UNION ALL 要比 ...
- mysql使用union顺序混乱
使用mysql用union并子集中用order by排序顺序会混乱 1. (select id from a order by start_time asc) union all (select id ...
- mysql union result,【经验】Mysql的UNION用法解析及TP中写法
最近也是在写项目中碰到的这个问题,需要将两个SELECT查询结果组合起来进行分组排序,想到了用union方法,用TP的union操作根本无法完成复杂的union操作,于是搜罗了一下,先说一下union ...
- mysql group by日期_深入研究mysql中group by与order by取分类最新时间内容
鉴于项目的需要,就从网上找到该文章,文章分析得很详细也很易懂,在android里,(不知道是不是现在水平的限制,总之我还没找到在用 ContentProvider时可以使用子查询),主要方法是用SQL ...
- mysql: union / union all / 自定义函数用法详解
mysql: union / union all http://www.cnblogs.com/wangyayun/p/6133540.html mysql:自定义函数用法详解 http://www. ...
- mysql orderby asc_MySQL 数据排序 order by
1.单一字段排序 select * from tablename order by field1 desc; 排序采用order by+排序字段升序关键字(asc,desc),排序字段可以放多个,多个 ...
- mysql查询结果升序_MySQL ORDER BY:对查询结果进行排序
在MySQL SELECT 语句中,ORDER BY 子句主要用来将结果集中的数据按照一定的顺序进行排序. 其语法格式为: ORDER BY { | | } [ASC|DESC] 语法说明如下. 1) ...
- mySql中union all 及max,ifnull用法
mySql中union all 及max,ifnull用法 selectifnull(max(d.orderNum),0) totalNum,ifnull(max(d.money),0) totalM ...
最新文章
- python中的新式类与旧式类的一些基于descriptor的概念(上)
- linux 内核 fork,《Linux内核分析》之分析fork函数对应的系统调用处理过程
- WGCNA分析,简单全面的最新教程
- 0.0 目录-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
- JavaFX给控件添加css样式
- class-感知机Perception
- 微信小程序开发学习笔记006--微信小程序组件详解02
- 天玑800处理器支持鸿蒙系统吗,为何Redmi Note 9选择天玑800U处理器?和骁龙750G差距多大...
- python语音合法命名-下列哪些语句在Python中是合法的( )
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-4.动态Sql语句Mybaties SqlProvider...
- 《华为研发》读书笔记与读后感范文3300字
- 初级商业数字营销师直通车题库
- opencv(16) ROI区域图像叠加图像混合
- Word文档输出为pdf时目录出现“错误!未定义书签!”
- PDF文件解密安全口令
- 8段数码管C语言,单片机控制4位8段数码管显示温度的程序谁会啊
- 【Python】import class/import module
- RSA算法计算d的两种方法。
- Dell服务器做磁盘阵列
- 关于eclipse无法连接手机调试问题