MySQL 条件排序

Posted

技术标签:

【中文标题】MySQL 条件排序【英文标题】:MySQL Conditional Ordering 【发布时间】:2014-06-25 03:26:15 【问题描述】:

这样排序可以吗?

未分类

TIMEIN                TIMEOUT
null                  6/19/2014 12:00:00
6/19/2014 08:30:00    6/19/2014 10:30:00
6/19/2014 13:00:00    null
6/19/2014 19:06:00    6/19/2014 20:36:00 

排序

TIMEIN                TIMEOUT
6/19/2014 08:30:00    6/19/2014 10:30:00
null                  6/19/2014 12:00:00
6/19/2014 13:00:00    null
6/19/2014 19:06:00    6/19/2014 20:36:00 

列表按 TIMEIN 降序排列。如果 TIMEIN 为 NULL,则 TIMEOUT 将作为排序的基础,无需重新排序 'TIMEIN desc'。

【问题讨论】:

你的意思是像BY IFNULL(timein, timeout) 【参考方案1】:
ORDER BY IFNULL(TIMEIN, TIMEOUT) DESC

【讨论】:

成功了!我会在 5 分钟后将此标记为答案。【参考方案2】:

mysql 中有一个名为 COALESCE 的便捷函数,您可以直接放入 ORDER BY 子句中。

Here 是它的文档Here 是一个例子

以下是您可以附加到 SQL 的内容:

ORDER BY COALESCE(TIMEIN, TIMEOUT) DESC

【讨论】:

发布此答案并查看@shmsel 的答案后,我查看了两者之间的区别,似乎IFNULLCOALESCE 稍快。 ***.com/questions/4747877/…

以上是关于MySQL 条件排序的主要内容,如果未能解决你的问题,请参考以下文章

MySql操作「数据查询条件20211223

mysql 按某一条件自动排序问题

MySql 条件排序方式

mysql数据库怎么可以两个条件排序?

条件查询+排序查询操作(MySQL)

mysql中如何取得某一记录在某一条件排序中的位次