SQL 合并两个结果集 一个倒序,一个正序

要求状态正常的按end_time 升序排, 后面跟着 过期的 数据,按end_time 倒序排

select * from (SELECT * FROM table where status='正常' order by end_time asc) a union all

select * from (SELECT *  FROM table where status='到期' order by end_time desc)  b


必须外面包一层,直接两个结果集 union 发现正常的在上面,到期的在下面,但是各自内部是无序的,也就是说union的时候是没有order by做的union,

内部的order by没有生效, 包了一层应该是产生了临时中间表,次序便固定了。


还有个办法是用  case when 对 正常的 时间乘以-1 变为负值, 最后order by time  asc便可以得到结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值