MySQL ORDER BY [自定义SET字段值]

时间:2010-10-26 16:21:34

标签: mysql sql-order-by

我希望有一个简单的解决方案:

我有一个表,每行都有自己的状态(SET类型字段)。状态可以是:

  • 离线
  • 可用
  • 距离

我想订购如下

  • 可用
  • 距离
  • 离线
我认为这很简单

ORDER BY `status` ASC

会做的伎俩(字母顺序),但它给了我以下内容:

  • 离线
  • 可用
  • 距离

如何以最简单的方式解决这个问题?

提前致谢,

FABRIK

5 个答案:

答案 0 :(得分:20)

SELECT * FROM table ORDER BY FIELD(status,'offline','available','busy','distance')

请参阅Mysql order by specific ID values

答案 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值。