MySql - 按月份名称排序

use*_*007 5 mysql sql-order-by

我试图按月名称命令mysql查询:

January --  5
February -- 2
March    -- 5
and so on
Run Code Online (Sandbox Code Playgroud)

这是我的查询,但它没有订购:

SELECT leave_balance.balance, MonthName(leave_balance.date_added) AS month 
FROM leave_balance WHERE leave_balance.staff_id_staff = $iid 
GROUP BY month,  leave_balance.leave_type_id_leave_type 
HAVING leave_balance.leave_type_id_leave_type = $leaveBalTypID 
ORDER BY month
Run Code Online (Sandbox Code Playgroud)

请告诉我我做错了什么

PSR*_*PSR 12

你可以指定喜欢

ORDER BY FIELD(MONTH,'January','February','March',...)


SELECT leave_balance.balance, MonthName(leave_balance.date_added) AS month 
FROM leave_balance WHERE leave_balance.staff_id_staff = $iid 
GROUP BY month,  leave_balance.leave_type_id_leave_type 
HAVING leave_balance.leave_type_id_leave_type = $leaveBalTypID 
ORDER BY FIELD(MONTH,'January','February','March',...,'December');
Run Code Online (Sandbox Code Playgroud)


Mas*_*ood 7

如果将来列名发生变化,您无需担心。只需在查询末尾添加:

ORDER BY str_to_date(MONTH,'%M')
Run Code Online (Sandbox Code Playgroud)


Lee*_*ine 6

尝试使用内置的月份函数来获取月份的数字并以此排序。例如:

order by month(leave_balance.date_added)
Run Code Online (Sandbox Code Playgroud)