【问题标题】:MySql - order by monthnameMySql - 按月份名称排序
【发布时间】:2013-03-25 04:13:53
【问题描述】:

我正在尝试按月份名称订购 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

请告诉我哪里做错了

【问题讨论】:

  • 目前发布的内容是什么?

标签: mysql sql-order-by


【解决方案1】:

你可以指定像

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

【讨论】:

    【解决方案2】:

    只需在查询语句的末尾添加:

    ORDER BY str_to_date(MONTH,'%M')
    

    如果将来列名发生变化,您无需担心。

    【讨论】:

      【解决方案3】:

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

      order by month(leave_balance.date_added)
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多