我有一个返回以下数据的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
这可能吗?
答案 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