我需要这样排序:
第一个结果都是从CHA开始的人,然后是MAS,DIA,PLA,GOL,SIL,BRO
喜欢这个:
1. 挑战者 I
2. 挑战者 I
3. 大师二
4. 大师三
5. 铂金 II
6. 白金IV
7. 铂金 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数据库。任何帮助表示赞赏。
你拥有的是:
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;