我希望有一个简单的解决方案:
我有一个表,每行都有自己的状态(SET
类型字段)。状态可以是:
我想订购如下
ORDER BY `status` ASC
会做的伎俩(字母顺序),但它给了我以下内容:
如何以最简单的方式解决这个问题?
提前致谢,
FABRIK
答案 0 :(得分:20)
SELECT * FROM table ORDER BY FIELD(status,'offline','available','busy','distance')
答案 1 :(得分:9)
如果将SET
值重新排序为不切实际的话,你也可以这样做:
... ORDER BY CASE `status`
WHEN 'available' THEN 1
WHEN 'busy' THEN 2
WHEN 'distance' THEN 3
WHEN 'offline' THEN 4
END
答案 2 :(得分:6)
以为我会添加另一种按自定义字段值排序的方式
ORDER BY FIND_IN_SET(status, 'available,busy,distance,offline')
(如果给定的字符串包含引号,只需将其转义)
答案 3 :(得分:-1)
比上述解决方案更简单:
ORDER BY CONCAT(status)
答案 4 :(得分:-3)
没关系。
诀窍是以正确的顺序保存SET
值。