Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL中按月排序_Mysql_Sql Order By - Fatal编程技术网

如何在MySQL中按月排序

如何在MySQL中按月排序,mysql,sql-order-by,Mysql,Sql Order By,订单是11月和10月。我怎样才能将订单添加到此项中,以便订单是按月、一月、二月、三月……等 提前谢谢 CREATE TABLE `hw_homework` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `studentid` int(10) NOT NULL, `subjectid` int(10) NOT NULL, `assignment_name` varchar(255) COLLATE utf8_unicode_ci

订单是11月和10月。我怎样才能将订单添加到此项中,以便订单是按月、一月、二月、三月……等

提前谢谢

CREATE TABLE `hw_homework` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `studentid` int(10) NOT NULL,
  `subjectid` int(10) NOT NULL,
  `assignment_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `teacherid` int(10) NOT NULL,
  `date` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=55 ;

--
-- Dumping data for table `hw_homework`
--

INSERT INTO `hw_homework` (`id`, `studentid`, `subjectid`, `assignment_name`, `teacherid`, `date`) VALUES
(52, 56, 13, '1A', 20, '2012-10-28'),
(53, 56, 6, '12', 18, '2012-10-28'),
(54, 56, 4, 'page42', 59, '2012-11-02');


SELECT  studentID, 
        DATE_FORMAT(`date`,'%M') `month`,
        COUNT(studentid) totalMissed
FROM hw_homework
WHERE studentid = 56
GROUP BY studentid, DATE_FORMAT(`date`, '%M')

在查询中使用以下命令

GROUP BY MONTH(date)

mysql>按日期asc从hw_作业订单中选择*//递增顺序


mysql>按日期描述从hw_作业顺序中选择*

按照崔迪亚的建议,我添加了以下内容以获得我想要的。
SELECT  studentID, 
        DATE_FORMAT(`date`,'%M') `month`,
        COUNT(studentid) totalMissed
FROM hw_homework
WHERE studentid = 56
GROUP BY MONTH(DATE) ASC
谢谢大家

ORDER BY Month(date)

在您的情况下,它是基于aplhabets的订购。 下面将给出正确的结果

SELECT  studentID, 
    DATE_FORMAT(`date`,'%M') `month`,
    COUNT(studentid) totalMissed
FROM hw_homework
WHERE studentid = 56
GROUP BY studentid, DATE_FORMAT(`date`, '%M')
ORDER BY DATE_FORMAT(`date`,'%m')

偶然发现这篇文章试图找到按月份名称排序的解决方案。可能不是非常优雅的解决方案,但您可以使用string函数来获得该结果集

SELECT
studentID,
DATE_FORMAT(`date`, '%M') `month`,
COUNT(studentid) totalMissed FROM
hw_homework WHERE
studentid = 56 GROUP BY
studentid, 
DATE_FORMAT(`date`, '%M') ORDER BY
FIELD(
    DATE_FORMAT(`date`, '%M'),
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'December'
);

试试看。此外,为了便于阅读,您还可以使用更简单的函数MONTHNAME(
DATE
)替换日期格式。

为什么不按日期订购asc?您是否尝试过“按月(日期)订购”?您还不明白所问的问题。查看其他答案以了解更多信息。
SELECT
studentID,
DATE_FORMAT(`date`, '%M') `month`,
COUNT(studentid) totalMissed FROM
hw_homework WHERE
studentid = 56 GROUP BY
studentid, 
DATE_FORMAT(`date`, '%M') ORDER BY
FIELD(
    DATE_FORMAT(`date`, '%M'),
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'December'
);