我不会粘贴整个查询。它看起来像这样。
SELECT *, MONTH(date_created) as month
from table
GROUP BY month ORDER BY month='3', month asc
因为现在是四月,我今年正在查询,所以我预计顺序如下 3、1、2、4。
相反,我得到了 1、2、4、3。
如何更改语句的 ORDER BY 部分以首先按选定月份排序结果,然后按顺序显示一年中的其余月份?
我不会粘贴整个查询。它看起来像这样。
SELECT *, MONTH(date_created) as month
from table
GROUP BY month ORDER BY month='3', month asc
因为现在是四月,我今年正在查询,所以我预计顺序如下 3、1、2、4。
相反,我得到了 1、2、4、3。
如何更改语句的 ORDER BY 部分以首先按选定月份排序结果,然后按顺序显示一年中的其余月份?
添加DESC
ORDER BY month = '3' DESC, month asc
month='3'
是一个返回 1 或 0 的布尔表达式,所以基本上当结果为零时,它会在结果的最后一部分。
或不使用DESC
,使用<>
ORDER BY month <> '3', month asc
您必须在第一顺序添加DESC
or :ASC
SELECT *, MONTH(date_created) as month
FROM table
GROUP BY month ORDER BY month='3' DESC, month ASC
解决方案是按字段排序
SELECT * FROM table
GROUP BY month
ORDER BY FIELD(month, 3,1,2,4)