質問: テーブルを会社名でソートするとします。 しかし、そのフィールドには会社名とグループ名が混在していたとします。 その識別として[グループ グループ名] という記述で書かれていたとします。 これを、会社名→グループ名のようにソートしたいと考えてます。 本来、データベースそのものを的確に作るべきですが、敢えて手法があるかお聞きします ``` [fld1] サクラ電気店 タケ工務店 グループ 猪グループ ウメ株式会社 グループ 鹿商事 グループ 蝶ホールディングス ``` イメージ `SELECT * FROM db ORDER BY fld1.'グループ%' ASC, fld1 ASC;` 結果 ``` [fld1] ウメ株式会社 サクラ電気店 タケ工務店 グループ 猪グループ グループ 鹿商事 グループ 蝶ホールディングス ``` 本当は別に属性のフィールド持たせるべきなんですけどねぇ
回答: > > SELECT * FROM db ORDER BY fld1.'グループ%' ASC, fld1 ASC; > > > で問題ないと思いますよ。よく使う手法です。 あえて言えばifやcase whenで実数を渡した方が明示的ですね ``` select * from tbl order by if(name like 'グループ%',1,0) asc ,name asc; ``` caseならもっと複雑な条件で、1,2,3・・・とソート順を指定できます