gpt4 book ai didi

mysql - 在一个表上进行单个 mysql 选择,但对一列进行 ASC 和 DESC 两次排序?

转载 作者:行者123 更新时间:2023-11-30 00:40:24 24 4
gpt4 key购买 nike

我有一张已下订单的表。它们带有时间戳。有些订单还被标记为优先订单。

非优先订单按照先进先出原则填写 - 最旧的订单先填写,较新的订单排在队列后面。

但是,可以有优先顺序。它们有一个简单的 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 但我需要以不同的方式排序两个不同的选择。

缺少进行两个单独的选择 - 这可能吗?我想不通。

最佳答案

也许这样的东西会起作用

SELECT * 
FROM tab ORDER BY
(CASE WHEN
(priority = 1) THEN
'timestamp DESC'
ELSE
'timestamp'
END), priority DESC ;

在这里查看演示 fiddle http://sqlfiddle.com/#!2/3ce7f/3

关于mysql - 在一个表上进行单个 mysql 选择,但对一列进行 ASC 和 DESC 两次排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21814605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com