2015-02-07 75 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

认为这应该做的伎俩