我有下表:
key | date | flag -------------------------- 1 now() true 2 now() - 1 hour true 3 now() + 1 hour true 4 now() false 5 now() - 1 hour false 6 now() + 1 hour false
我想要以下排序:
flag = false
date asc
flag = true
date desc
以下查询正确吗?
( select * from test where flag = false order by date asc ) union all ( select * from test where flag = true order by date desc )
有一个更好的方法吗?请问union all保持行排序,因此只是连接两个内部查询的输出?
union all
我不知道如何order by根据条件在中重复列。
order by
可以使用来执行条件订单CASE,如下所示:
CASE
select * from test order by flag , case when flag then date end desc , case when not flag then date end asc