如何在mysql中对enum字段进行排序


How to sort enum field in mysql

我使用的是PHP和mysql,给出了一个表,我得到了一个要排序的表,该表有一个枚举字段

 enum('Pending','Acive','INACTIVE');

我不明白桌子是怎么排列的?

枚举排序

ENUM值根据其索引号进行排序,索引号取决于枚举成员在列规范中列出的顺序。例如,对于ENUM('b','a'),'b'在'a'之前排序。空字符串在非空字符串之前排序,NULL值在所有其他枚举值之前排序。

为了防止在ENUM列上使用ORDER BY子句时出现意外结果,请使用以下技术之一:

  • 按字母顺序指定ENUM列表。

  • 通过编码ORDER BY CAST(col AS CHAR)ORDER BY CONCAT(col),确保列是按词汇排序的,而不是按索引号排序的。

参考:http://dev.mysql.com/doc/refman/5.6/en/enum.html#enum-排序

在Sql 中可以这样排序

ORDER BY CASE status
           WHEN 'Pending' THEN 1
           WHEN 'Acive' THEN 3
           ELSE 2
         END