首页 > 解决方案 > SQL条件排序依据?

问题描述

我需要能够首先根据它们是否打开,然后按创建的降序对票证查询进行排序。如果我的票是开放的,它的完成日期是“0000-00-00 00:00:00”。如果它已关闭,则它具有正确的完成日期。所以表有这些字段(很重要):

我希望任何完成日期为 '0000-00-00 00:00:00' 的工单都以与创建时相反的顺序位于顶部,然后所有已关闭的工单都以相反的顺序排列在其下方。

我的第一次尝试是:

select id, message
from tickets
where {{search conditions}}
ORDER BY tickets.created, tickets.id DESC; 

但不幸的是,因为tickets.created 字段是日期时间,所以我在顶部得到了打开的票,但第一个关闭的票是搜索返回的最旧的票。有什么方法可以让我有条件地按语句排序,给我所有打开的票,然后按iddesc 排序顺序给我剩下的票?

标签: mysqlsql

解决方案


您可以在 中使用两个键order by

order by (t.completed = '0000-00-00 00:00:00') desc,  -- put these first
         t.completed desc

推荐阅读