MySQL 按两个日期列排序的查询过滤器

MySQL Query Filter Sequenced by two date columns

我想在 date_due 列和 date_paid 列中按正确的日期顺序排列我的 table。

我的 table 结构显示如下,按 due_date 列排序:

Period      Due Date        Paid Date
                            12/01/2014
                            02/05/2014
1           01/01/2015
2           02/01/2015
3           03/01/2015
4           04/01/2015

那么我只想这样做:

Period       Due Date       Paid Date
                            12/01/2014
1            01/01/2015
2            02/01/2015
                            02/05/2014
3            03/01/2015
4            04/01/2015

好吧,忘记我的愚蠢评论吧——它没有建设性。首先,我认为您的数据有误:我猜“02/05/2014”应该是“02/05/2015”。

问题是您必须聚合两列,然后才能进行排序。像我在评论中所说的那样使用 GREATEST 函数实际上是行不通的,因为它不是空保存。例如,您可以在此处使用 COALESCE function

总而言之,这可以通过 "adding a column" 来完成,比如

SELECT 
  *, Coalesce(`Due Date`, `Paid Date`) as bananas
FROM 
  table1
ORDER BY
  bananas

或者直接在ORDER BY子句中添加表达式:

SELECT 
  *
FROM 
  table1
ORDER BY
  Coalesce(`Due Date`, `Paid Date`)

请查看此 fiddle 并自己尝试:http://sqlfiddle.com/#!2/21a84/1