同一表格中的文字和日期。订购,以便文本始终在底部

时间:2014-11-02 14:01:37

标签: mysql syntax

我有一个带日期的表,在同一个表中我也有文本条目。例如:

2014-11-02
2014-11-01
Not done
2014-10-05
Not done
Not done

如果我运行SELECT * FROM表ORDER BY日期,那么我得到

2014-10-05
2014-11-01
2014-11-02
Not done
Not done
Not done

这是完美的。但是当我使用desc反转这个查询时,我得到:

Not done
Not done
Not done
2014-11-02
2014-11-01
2014-10-05

我想要的是“未完成”总是在底部。如果有人得到线索:)

2 个答案:

答案 0 :(得分:0)

以下是您想要的简单方法:

order by (left(dates, 4) + 0 > 0) desc,
         dates

它将前四位数字转换为数字。如果该数字大于零,则假定它是一年并将这些行放在第一位。这不会检查完整形成的日期,但它可能足以满足您的目的。

答案 1 :(得分:0)

尝试使用:

SELECT * FROM table ORDER BY FIELD(dates,'Not done') ASC, dates ASC

在您的评论之后:

SELECT dates, dateadded, (dates='Not yet') AS test, IF(test, cast(`dateadded` AS char), cast(`dates` AS char)) AS testsort FROM table ORDER BY test ASC, testsort ASC