MySQL ORDER BY Customized

时间:2013-06-11 13:24:10

标签: mysql sql-order-by

我有这些行和数据库,我想按顺序排序,但按照下面的顺序添加字符和数字。 colum Score是varchar。 WINNER和LOSER也在得分列中。

得分

WINNER
100+
100
90
80+
80
50
LOSER

1 个答案:

答案 0 :(得分:1)

此方法在订购时将score值转换为数字。我尝试使用您的数据,然后使用您的数据和其他值,并且两次都有效:

SELECT score
FROM myTable
ORDER BY
  CASE
    WHEN score = 'WINNER' THEN 100000
    WHEN score = 'LOSER' THEN -100000
    WHEN score LIKE '%+' THEN score * 100 + 99
    ELSE score * 100
 END DESC

转换如下:

  • WINNER = 100,000
  • LOSER = -100,000
  • number+ =号码* 100 + 99
  • number =数字