在ORDER BY CASE中使用LIKE的SQL

时间:2016-02-03 19:15:00

标签: mysql sql

我需要这样排序:
首先是所有以CHA开始的结果,然后是MAS,DIA,PLA,GOL,SIL,BRO

像这样:
1.挑战我 2.挑战我 3. MASTER II
4. MASTER III
5. PLATINUM II 6.铂金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 个答案:

答案 0 :(得分:1)

你拥有的是:

vqadd.u64 d1, d1, d2

你想要做的是:

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;