我有一张桌子“交易”
+---------+---------+
| deal_id | expired |
+---------+---------+
|       1 |       0 |
|       2 |       0 |
|       3 |       0 |
|       4 |       0 |
|       5 |       1 |
|       6 |       0 |
|       7 |       1 |
|       8 |       1 |
|       9 |       0 |
|      10 |       0 |
+---------+---------+
我想归档以下订单:
1) 底部的过期交易
2) deal_id 高于 5 在顶部的交易,按 deal_id 排序
3) 处理 id 低于/等于 5 在底部由 RAND 排序的种子
SELECT deal_id, expired FROM Deal ORDER by expired = 1, deal_id < 5, rand(1) desc
这个查询是错误的,因为表的顶部也将按 rand 排序,而我想按 deal_id desc 排序的顶部。
这是它应该照顾的方式:
+---------+---------+
| deal_id | expired |
+---------+---------+
|       10|       0 | top part ordered by
|       9 |       0 | deal_id desc 
|       6 |_______0 | if ( deal_id < 5 AND expired = 0 )
|       4 |       0 |  
|       1 |       0 | bottom part ordered
|       5 |       0 | by rand(seed) 
|       7 |       0 | expired = 1 at the bottom
|       5 |       1 |
|       7 |       1 |
|       8 |       1 |
+---------+---------+
是否可以通过仅使用“ORDER BY”中的表达式来存档?我知道我可以使用 UNION,但我真的不想,它会让我在我的框架中保持简单。
谢谢。