在MySQL中按VARCHAR值排序

时间:2012-12-04 13:10:20

标签: mysql sql-order-by

我有一个包含2列的表

id  status

1   SUBMIT
2   CANCEL
3   UPDATE
4   CANCEL
5   SUBMIT
6   UPDATE

如果我这样做:

select * from table

我可以按照我想要使用MySQL的顺序订购结果吗? ASC将取消CANCEL,SUBMIT,UPDATE和DESC。如果我想要一个不同的订单,例如SUBMIT,CANCEL,UPDATE,该怎么办?有可能吗?

3 个答案:

答案 0 :(得分:2)

如果我理解正确,这就是你需要的:

SELECT * FROM `Table` ORDER BY FIELD(status, 'SUBMIT', 'CANCEL', 'UPDATE');

您可以更改列值的顺序以符合您的需求。

这是测试: http://sqlfiddle.com/#!2/d1885/3

答案 1 :(得分:0)

对于您的案例::

Select status from table group by status

将提供您需要的结果

答案 2 :(得分:0)

当您搜索mysql custom sort order时,您会发现很多示例。其中之一是order by case

select *
from mytable
order by case status when 'SUBMIT' then 1
                     when 'CANCEL' then 2
                     when 'UPDATE' then 3
         end

SQL Fiddle