2015-02-07 77 views
-1

我有一個表的結構是這樣排序: -使用MONTHNAME和

 ID  Month    Year 

     1  January    2015 
     2  February    2015 
     3  March     2014 
     4  April     2014 
     5  May     2014 
     6  June     2014 
     7  July     2014 
     8  August    2014 
     9  September    2014 
     10  October    2014 
     11  November    2014 
     12  December    2014 

我想這個使用舊的一年的月份進行排序,今年第一如果沒有進來 月在本年度否則要按當前年份 月份(當前年份(如果月份存在月份))進行排序。

預期成果是: -

  Month    Year 

      March     2014 
      April     2014 
      May     2014 
      June     2014 
      July     2014 
      August    2014 
      September    2014 
      October    2014 
      November    2014 
      December    2014 
      January    2015 
      February    2015 
+0

請提供您的代碼..你有什麼嘗試? – 2015-02-07 06:13:31

+0

我的查詢是: - SELECT Months,IF(flag = 1,new_year,old_year)as FROM(SELECT MONTH(now())> = ID as flag,year(now())as new_year,year(now( )) - 1 as old_year,Months(我在month_stats ID,monthname中有兩列) FROM MONTHS_STATS)AS T; – 2015-02-07 06:15:07

回答

1

你可以爲了得到它可以根據您的需要進行排序的值使用STR_TO_DATE。像

SELECT M.*, 
     STR_TO_DATE(CONCAT(M.Month,' ',M.Year),'%M %Y') AS 'myorder' 
    FROM yourtable M 
ORDER BY myorder ASC; 

應該做的工作。

0

試圖查詢這個功能,你的情況可能有助於

Select STR_TO_DATE(CONCAT(Month,'',Year),'%M %Y') AS 'myorder' from tableName Order By Cutom ASC 
-1

選擇月,一年TABLE_NAME ORDER BY YEAR DESC,MONTH ASC

認爲這應該做的伎倆