Mysql Order按特定字符串

时间:2012-12-21 11:36:30

标签: mysql

我似乎找不到这个答案:

说我有一张这样的表:

ID   Name
------------------------
1    AAAAAAAAA
2    ABAAAAAAA
3    BBAAAAAAA
4    CDAAAAAAA
5    BBAAAAAAA

我可以通过name订购 - 但是 - 从说明BB启动该订单并让它循环回来(而不是来自AZ,从BB转到{ {1}})

最终结果将是:

BA

这有意义吗?

2 个答案:

答案 0 :(得分:3)

如果您希望BB出现在开头,可以使用:

select *
from yourtable
order by case when substring(name, 1, 2) = 'BB' then 0 else 1 end

请参阅SQL Fiddle with Demo

如果您希望CD出现在第二位,请使用:

select *
from yourtable
order by 
  case 
    when substring(name, 1, 2) = 'BB' then 0 
    when substring(name, 1, 2) = 'CD' then 1 
    else 2 end, name

请参阅SQL Fiddle with Demo

第二次查询的结果:

| ID |      NAME |
------------------
|  3 | BBAAAAAAA |
|  5 | BBAAAAAAA |
|  4 | CDAAAAAAA |
|  1 | AAAAAAAAA |
|  2 | ABAAAAAAA |

答案 1 :(得分:0)

这将按名称排序所有行。它将首先按名称排序>= 'BB'行,然后按名称排序< 'BB'行,使其按您希望的方式循环:

select *
from your_table
order by name<'BB', name