MySQL按列= x,列asc?

时间:2013-04-25 13:59:27

标签: mysql

我不会粘贴整个查询。它看起来像这样。

SELECT *, MONTH(date_created) as month 
from table 
GROUP BY month ORDER BY month='3', month asc

由于是4月份,我今年要查询,我原本预计订单如下3,1,2,4。

相反,我得出1,2,4,3。

如何更改语句的ORDER BY部分,以便按照选定月份的顺序排序结果,然后按顺序显示年份中的其余月份?

3 个答案:

答案 0 :(得分:5)

添加DESC

ORDER BY month = '3' DESC, month asc

month='3'是一个返回1或0的布尔表达式,所以基本上当结果为零时,它将在结果的最后部分。

或不使用DESC,请使用<>

ORDER BY month <> '3', month asc

答案 1 :(得分:0)

您必须在第一个订单中添加DESCASC

SELECT *, MONTH(date_created) as month 
FROM table 
GROUP BY month ORDER BY month='3' DESC, month ASC

答案 2 :(得分:-2)

解决方案是ORDER BY FIELD

SELECT * FROM table
GROUP BY month
ORDER BY FIELD(month, 3,1,2,4)