mysql通过在同一张表上查询的自定义顺序
Posted
技术标签:
【中文标题】mysql通过在同一张表上查询的自定义顺序【英文标题】:mysql custom order by query on same table 【发布时间】:2016-07-14 06:02:09 【问题描述】:我有类似的数据,而且它有更多的列,不仅低于两列:
id | s_type
1 | ACTIVE
2 | PENDING
3 | UPDATE
4 | ACTIVE
5 | PENDING
6 | UPDATE
我使用了 ASC、DESC 的顺序,但我想以自定义顺序显示数据,并且我想将其显示为我的自定义顺序(不仅是升序或降序):希望首先查看所有 PENDING,然后查看所有 ACTIVE,然后查看所有 UPDATE s_type
id | s_type
1 | PENDING
2 | PENDING
3 | ACTIVE
4 | ACTIVE
5 | UPDATE
6 | UPDATE
如何用单个查询显示
【问题讨论】:
【参考方案1】:试试这个:
SELECT *
FROM yourtable
ORDER BY field(s_type, 'PENDING', 'ACTIVE', 'UPDATE'), id
或使用CASE WHEN
SELECT *
FROM yourtable
ORDER BY CASE s_type WHEN 'PENDING' THEN 1
WHEN 'ACTIVE' THEN 2
WHEN 'UPDATE' THEN 3 END, id
【讨论】:
【参考方案2】:我试过了,效果很好:
SELECT * FROM mytable ORDER BY
s_type = 'UPDATE',
signal_status = 'ACTIVE',
signal_status = 'PENDING'
【讨论】:
以上是关于mysql通过在同一张表上查询的自定义顺序的主要内容,如果未能解决你的问题,请参考以下文章