【发布时间】:2020-01-21 21:09:01
【问题描述】:
我需要能够对票证的查询进行排序,首先是根据它们是否打开,其次是按创建的降序排列。如果我的票是开放的,它的完成日期是“0000-00-00 00:00:00”。如果它已关闭,则它具有正确的完成日期。所以表格有这些字段(很重要):
- 工单:{id (int), created (datetime), completed (datetime) }
我希望任何完成日期为“0000-00-00 00:00:00”的工单按创建时的相反顺序位于顶部,然后所有已关闭的工单都以相反的顺序排列在下面那个。
我的第一次尝试是:
select id, message
from tickets
where {{search conditions}}
ORDER BY tickets.created, tickets.id DESC;
但不幸的是,因为tickets.created 字段是日期时间,所以我在顶部得到了打开的票,但第一个关闭的票是搜索返回的最旧的票。有什么方法可以让我有条件地按语句排序,给我所有打开的票,然后以id desc 排序顺序给我剩下的票?
【问题讨论】:
-
我有点困惑。如果条件仅在
completed列上,那么您为什么在order by中使用created。我想我可能遗漏了什么。