【问题标题】:mysql custom order by query on same tablemysql通过在同一张表上查询的自定义顺序
【发布时间】: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

如何用单个查询显示

【问题讨论】:

    标签: mysql


    【解决方案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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-07
        • 2014-07-05
        • 1970-01-01
        • 2020-11-29
        • 2014-08-17
        相关资源
        最近更新 更多