将两个MySQL表列排序为一个

时间:2017-12-18 23:14:38

标签: mysql

我有2个不同的字段,这些字段将包含或将包含日期1000000due_on_date。如果其中没有日期,则另一个会。

date_begin

是否可以按这两列排序,但作为一列?

例如

due_on_date有这三个日期

SELECT * 
  FROM table 
 WHERE this = 'that' 
 ORDER 
    BY due_on_date ASC
     , date_begin ASC

date_begin有这三个日期

01/01/20017
05/01/2017
08/01/2017

最终的排序顺序看起来像是

02/01/2017
04/01/2017
07/01/2017

我不想做的是先按一个对另一个进行排序,如果有意义,我希望将该语句排序为一列。

2 个答案:

答案 0 :(得分:2)

假设您的意思是要按最低的非空值排序,

ORDER BY LEAST(
   IFNULL(due_on_date, NOW()+INTERVAL 10 year),
   IFNULL(date_begin, NOW()+INTERVAL 10 year)
)

答案 1 :(得分:0)

你是说这个吗?

SELECT * 
FROM table 
WHERE this = 'that' 
ORDER BY concat(date_format(due_on_date,'%Y-%m-%d'),date_format(date_begin,'%Y-%m-%d')) asc