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

fab*_*rik 3 mysql sql-order-by

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

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

  • 离线
  • 可得到
  • 距离

我想订购如下

  • 可得到
  • 距离
  • 离线

我觉得很简单

ORDER BY `status` ASC
Run Code Online (Sandbox Code Playgroud)

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

  • 离线
  • 可得到
  • 距离

怎么能以最简单的方式解决这个问题?

提前致谢,

FABRIK

Ced*_*ric 21

SELECT * FROM table ORDER BY FIELD(status,'offline','available','busy','distance')
Run Code Online (Sandbox Code Playgroud)

按特定ID值查看Mysql顺序


Dan*_*llo 9

如果重新排序SET不切实际的值,你也可以这样做:

... ORDER BY CASE `status` 
                WHEN 'available' THEN 1
                WHEN 'busy' THEN 2
                WHEN 'distance' THEN 3
                WHEN 'offline' THEN 4
             END
Run Code Online (Sandbox Code Playgroud)


MSp*_*eij 8

以为我会添加另一种按自定义字段值排序的方式,

ORDER BY FIND_IN_SET(status, 'available,busy,distance,offline')
Run Code Online (Sandbox Code Playgroud)

(如果给定的字符串包含引号,则只需将其转义)