3

私はこれに対する答えを見つけることができないようです:

次のようなテーブルがあるとします。

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

注文できる方法はありますかname-しかし-その注文を言うから開始し、BBループバックさせます(AZからではなく、からに移動BBしますBA

最終結果は次のようになります。

3    BBAAAAAAA
5    BBAAAAAAA
4    CDAAAAAAA
1    AAAAAAAAA
2    ABAAAAAAA

それは理にかなっていますか?

4

2 に答える 2

3

を最初に表示したい場合はBB、次を使用できます。

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

デモで SQL Fiddle を参照してください

2 番目に表示する場合は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 を参照してください

2 番目のクエリの結果:

| ID |      NAME |
------------------
|  3 | BBAAAAAAA |
|  5 | BBAAAAAAA |
|  4 | CDAAAAAAA |
|  1 | AAAAAAAAA |
|  2 | ABAAAAAAA |
于 2012-12-21T11:38:52.143 に答える
0

これにより、すべての行が名前順に並べられます。最初に行>= 'BB'を名前順に配置し、次に行< 'BB'も名前順に並べて、必要な方法でループさせます。

select *
from your_table
order by name<'BB', name
于 2012-12-21T11:40:27.827 に答える