2013-03-25 96 views
1

我试图通过月份名称订购MySQL查询,如:MySQL的 - 为了通过MONTHNAME

January -- 5 
February -- 2 
March -- 5 
and so on 

这里是我的查询,但它不是订购:

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 

请告诉我,我在哪里做错了

+0

它是什么目前传出来的? – judda 2013-03-25 04:15:19

回答

7

你可以指定一个像

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'); 
+0

谢谢,这真的很有帮助。 – user007 2013-03-26 07:20:49

2

尝试使用内置的月份函数来获取月份的数量和顺序。例如:

order by month(leave_balance.date_added) 
0

只需按leave_balance.date_added字段排序。默认情况下,它将按月排序。

1

只是在结尾处加上:

ORDER BY str_to_date(MONTH,'%M')