【发布时间】:2014-02-17 02:31:21
【问题描述】:
我有一张已下订单的表格。它们带有时间戳。一些订单也被标记为优先订单。
非优先订单以先进先出方式成交 - 最早成交的订单先成交,较新的订单排在最后。
但是,可以有优先顺序。这些有一个简单的 bool '1' 来标记为优先级。但问题是,它们是反向填写的——较新的优先级订单会推回较旧的优先级订单。所以这些时间戳是按 DESC 排序的,而不是升序的。
我基本上需要一个像这样工作的选择:(我知道这是无效的,我试图展示我想要实现的目标)
SELECT *
FROM table
ORDER BY priority DESC,
(if priority = 1 order by timestamp DESC else order by timestamp)
我尝试过合并两个选择,但这些选择会丢失排序。我尝试了 (SELECT) UNION (SELECT) ORDER BY,但我需要两个不同的选择以不同的方式排序。
没有做两个单独的选择 - 这可能吗?我想不通。
【问题讨论】: