10

私は次のような月の名前でmysqlクエリを注文しようとしています:

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

どこが間違っているのか教えてください

4

4 に答える 4

20

あなたは次のように指定することができます

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');
于 2013-03-25T04:17:34.873 に答える
7

クエリステートメントの最後にこれを追加するだけです。

ORDER BY str_to_date(MONTH,'%M')

将来、列名が変更された場合でも、心配する必要はありません。

于 2018-02-08T23:42:45.143 に答える
6

組み込みの月関数を使用して、月の番号とその順序を取得してみてください。例えば:

order by month(leave_balance.date_added)
于 2013-03-25T04:18:06.053 に答える
2

leave_balance.date_addedフィールドごとに並べ替えるだけです。デフォルトでは、月で並べ替えられます。

于 2013-03-25T04:54:29.803 に答える