MySQL按条件秒排序
从表MySQL按条件秒排序,mysql,Mysql,从表事件中选择,包括列开始日期和进行中(布尔值),我想: 按正在进行的对结果进行排序第一次(所有0在1之前) 然后我想按开始日期ASC对所有非正在进行的事件(正在进行的=0)进行子排序,并按开始日期描述对所有正在进行的事件(正在进行的=1)进行子排序。我可能错过了一些愚蠢的简单的东西(可能使用CASE?),但我被卡住了 TIA只需使用TIMESTAMPDIFF()计算即可: 请注意,在这两种情况下,参数的顺序是如何颠倒的。(我可能会让他们自己倒过来-如果是这样,就在每次调用中交换。)您必须使用计
事件
中选择,包括列开始日期
和进行中
(布尔值),我想:
正在进行的对结果进行排序第一次(所有0在1之前)
开始日期ASC
对所有非正在进行的事件(正在进行的=0
)进行子排序,并按开始日期描述对所有正在进行的事件(正在进行的=1
)进行子排序。我可能错过了一些愚蠢的简单的东西(可能使用CASE
?),但我被卡住了李>
TIA只需使用TIMESTAMPDIFF()计算即可:
请注意,在这两种情况下,参数的顺序是如何颠倒的。(我可能会让他们自己倒过来-如果是这样,就在每次调用中交换。)您必须使用计算值(并分别为0
和1
生成不同的值,以创建一个有序的值)。我怀疑这比只运行两个单独的查询要慢。请提供数据样本和预期结果好吗?sqlfiddle将非常有帮助地向我们展示您到目前为止的成果。谢谢!我试图弄清楚如何将ASC
和DESC
放在条件中。出于我的目的,我将函数更改为DATEDIFF
(使用DATE
数据类型),但这成功了!
SELECT ...
FROM ...
...
ORDER BY ongoing, IF(ongoing, TIMESTAMPDIFF(NOW(), start_date),
TIMESTAMPDIFF(start_date, NOW()))