2012-11-02 3 views
0

Here is demoMySQL에서 월별 정렬 방법

주문은 11 월과 10 월입니다. 1 월, 1 월, 2 월, 3 월 등 순서가되도록 주문 순서를 어떻게 추가 할 수 있습니까?

미리 감사드립니다.

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

* 오름차순으로 정렬 * 오름차순 *? –

+3

"MONTH (날짜)까지 주문"을 시도 했습니까? – Chuidiang

답변

0
SELECT studentID, 
    DATE_FORMAT(`date`,'%M') as `month`, 
    COUNT(studentid) totalMissed 
FROM hw_homework 
WHERE studentid = 56 
order by Month(month) 
GROUP BY studentid, DATE_FORMAT(`date`, '%M') 
2

를 사용하여 쿼리에 다음과 같이

GROUP BY MONTH(date) 
-1

MySQL의>를 선택 * 날짜 오름차순으로 hw_homework 순서와; // 주문 증가

OR

의 MySQL> 날짜 내림차순 의해 hw_homework 순서에서 선택한 *;

+1

질문하는 내용을 이해하지 못했습니다. 자세한 내용은 다른 답변을 검토하십시오. –

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

Chuidiang이 내가 원하는 것을 얻기 위해 다음을 추가했다고 제안했습니다. 감사합니다.

ORDER BY Month(date) 
1

귀하의 경우에는 주문에 따라 주문됩니다. 다음은 올바른 결과를 제공합니다.

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

이 게시물을 우연히 발견하여 월 이름별로 정렬 할 솔루션을 찾으려고합니다. 아마도 매우 우아한 해결책은 아니지만 FIELD 문자열 함수를 사용하여 결과 집합을 가져올 수 있습니다.

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

시도해보십시오. 또한 DATE_FORMAT을 가독성을 위해 MONTHNAME (date) 함수로 쉽게 대체 할 수 있습니다.

관련 문제