SQL条件排序依据?
Posted
技术标签:
【中文标题】SQL条件排序依据?【英文标题】:SQL conditional order by? 【发布时间】: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
。我想我可能遗漏了什么。
【参考方案1】:
您可以在order by
中使用两个键:
order by (t.completed = '0000-00-00 00:00:00') desc, -- put these first
t.completed desc
【讨论】:
以上是关于SQL条件排序依据?的主要内容,如果未能解决你的问题,请参考以下文章