2016-02-03 54 views
0

我需要排序是這樣的:
初步結果都是誰與CHA上啓動,然後MAS,DIA,PLA,GOL,SIL,BROSQL的ORDER使用LIKE BY CASE

像這樣:
1。 CHALLENGER我
2. CHALLENGER我
3. MASTER II
4. MASTER III
5. PLATINUM II
6. PLATINUM IV
7. PLATINUM V
等。

最重要的是隻按名稱排序,而不是在最後羅馬數字,但如果這很容易,如果有人會顯示出一種方式會很感激。

截至目前,這是我的SQL:

SELECT rank FROM table 
    ORDER BY 
    CASE rank 
     WHEN rank LIKE 'CHA%' THEN 1 
     WHEN rank LIKE 'MAS%' THEN 2 
     WHEN rank LIKE 'DIA%' THEN 3 
     WHEN rank LIKE 'PLA%' THEN 4 
     WHEN rank LIKE 'GOL%' THEN 5 
     WHEN rank LIKE 'SIL%' THEN 6 
     WHEN rank LIKE 'BRO%' THEN 7 
     WHEN rank LIKE 'Unranked' THEN 8 
     WHEN rank LIKE 'No Data' THEN 9 
     ELSE 10 
    END; 

然而,這是行不通的。我正在使用MySQL數據庫。任何幫助讚賞。

回答

1

你這是什麼東西:

SELECT [rank] FROM table 
    ORDER BY 
    CASE [rank] 
     WHEN [rank] LIKE 'CHA%' THEN 1 
     WHEN [rank] LIKE 'MAS%' THEN 2 
     WHEN [rank] LIKE 'DIA%' THEN 3 
     WHEN [rank] LIKE 'PLA%' THEN 4 
     WHEN [rank] LIKE 'GOL%' THEN 5 
     WHEN [rank] LIKE 'SIL%' THEN 6 
     WHEN [rank] LIKE 'BRO%' THEN 7 
     WHEN [rank] LIKE 'Unranked' THEN 8 
     WHEN [rank] LIKE 'No Data' THEN 9 
     ELSE 10 
    END; 

你想要做的是這樣的:

SELECT [rank] FROM table 
     ORDER BY 
     CASE 
      WHEN [rank] LIKE 'CHA%' THEN 1 
      WHEN [rank] LIKE 'MAS%' THEN 2 
      WHEN [rank] LIKE 'DIA%' THEN 3 
      WHEN [rank] LIKE 'PLA%' THEN 4 
      WHEN [rank] LIKE 'GOL%' THEN 5 
      WHEN [rank] LIKE 'SIL%' THEN 6 
      WHEN [rank] LIKE 'BRO%' THEN 7 
      WHEN [rank] LIKE 'Unranked' THEN 8 
      WHEN [rank] LIKE 'No Data' THEN 9 
      ELSE 10 
     END; 
+0

酷!所以在mysql中,'case'之後不需要任何東西? –

+1

有兩種方法可以使用CASE語句。一種方法是CASE WHEN <列內的值> ....或者您可以按照我在答案中所做的方式使用它。但是,當你使用LIKE時,你必須按照我在答案 –

+0

中的方式使用它,非常感謝它! – Marcipanas