0

我有一个有 2 列的表

id  status

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

如果我做:

select * from table

我可以使用 MySQL 按我想要的顺序排序结果吗?
ASC 将是 CANCEL、SUBMIT、UPDATE 和 DESC 反过来。如果我想要一个不同的订单,比如提交、取消、更新怎么办?可能吗?

4

3 回答 3

2

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

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

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

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

于 2012-12-04T13:14:50.937 回答
0

对于您的情况::

Select status from table group by status

会给出你需要的结果

于 2012-12-04T13:12:29.267 回答
0

当您搜索mysql 自定义排序顺序时,您会发现很多示例。其中之一是order by case

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

SQL小提琴

于 2012-12-04T13:18:09.657 回答