Mysql - 按自定义排序?

时间:2014-03-27 20:18:55

标签: mysql

我有一个返回以下数据的mysql查询:

select Desc,Value from table;

Desc        Value
 a           4
 r           3
 e           4
 j           7
 w           6
 p           6

我想通过Descr订购,但是按照特定的顺序(json需要这个特定的)

Desc        Value
 r           3  
 a           4
 e           4
 j           7
 p           6
 w           6

这可能吗?

3 个答案:

答案 0 :(得分:2)

ORDER BY FIELD(`desc`, 'r', 'a', 'e', 'j', 'p', 'w')

注意:如果desc值与给定值不匹配,那么它将首先出现,因为FIELD()将返回0

答案 1 :(得分:0)

它不漂亮,但您可以按(condition) DESC订购。 DESC因为如果条件为真,那么 more 比条件为false时错误:

SELECT
    Desc,
    Value
FROM
    Foo
ORDER BY
    (Desc = 'r') DESC,
    (Desc = 'a') DESC,
    (Desc = 'e') DESC,
    (Desc = 'j') DESC,
    (Desc = 'p') DESC,
    (Desc = 'w') DESC

答案 2 :(得分:0)

您可以通过指定所需顺序的case表达式进行排序:

SELECT   `desc`, `value`
FROM     my_table
ORDER BY CASE `desc` WHEN 'r' THEN 1 
                     WHEN 'a' THEN 2
                     WHEN 'e' THEN 3
                     WHEN 'j' THEN 4
                     WHEN 'p' THEN 5
                     WHEN 'w' THEN 6
                     ELSE 999 --for completeness sake
          END CASE ASC