我似乎找不到这个答案:
说我有一张这样的表:
ID Name
------------------------
1 AAAAAAAAA
2 ABAAAAAAA
3 BBAAAAAAA
4 CDAAAAAAA
5 BBAAAAAAA
我可以通过name
订购 - 但是 - 从说明BB
启动该订单并让它循环回来(而不是来自AZ,从BB
转到{ {1}})
最终结果将是:
BA
这有意义吗?
答案 0 :(得分:3)
如果您希望BB
出现在开头,可以使用:
select *
from yourtable
order by case when substring(name, 1, 2) = 'BB' then 0 else 1 end
如果您希望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
第二次查询的结果:
| 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