首页 文章

通过任意字母对MYSQL结果进行排序的方法(即,首先显示以F开头的所有行)

提问于
浏览
0

我有一列状态,并且,根据查询,我想按结果按特定状态排序,然后按id(Asc或Desc,取决于)排序 . 例如,我可能希望显示状态为“HI”的所有行,按ID desc排序,然后按ID desc排序所有其他行 .

我希望我可以在一个查询中执行此操作,而不是获得所有我喜欢的状态结果,然后完成剩下的工作 . 我可以吗?

2 回答

  • 1

    你有两个选择:

    • 做一个工会

    • 编写一个函数并使用它来排序

    在第一种情况下,你可以做类似的事情

    select 1 as res_order, ...
      ...
      where state like 'hi%'
    union
    select 2 as res_order, ...
      ...
      where state not like 'hi%'
    order by res_order asc, id desc
    

    在第二种情况下,你可以做类似的事情

    select my_function(state, "hi") as row_order, ...
      ...
      order by row_order
    

    其中函数返回匹配状态的较低值 .

    代码是我的头脑:它可能需要一些调整才能使它可以运行 .

  • 1

    怎么样:

    SELECT id, state
    FROM sometable
    ORDER BY IF(state = 'HI', 0, 1) ASC, id DESC;
    

    这将首先排序'HI'行 . 如果您需要它们,请将ASC更改为DESC .

相关问题