人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLで質問です。

ORDER BY yomi
というふうに読み仮名でソートしているのですが、
特定の言葉だけ、ソートに関係なく一番上に表示したい場合、
どのような方法があるのでしょうか?

アオ
アカ
キイロ
ミドリ
ムラサキ

「ミドリ」はソートに関係なく、一番に表示させたい

ミドリ
アオ
アカ
キイロ
ムラサキ

という感じにしたいのです。宜しくお願いします。

●質問者: haring
●カテゴリ:ウェブ制作
✍キーワード:SQL アカ ソート ミドリ ムラサキ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● llusall
●20ポイント

オラクルですが、DECODEを使いました。

こんな感じでいかがでしょうか?


SELECT * FROM

(

SELECT TBL.*, DECODE(COLOR,’ミドリ’,0,1) AS WKCOL FROM XXXXXX TBL

)

ORDER BY WKCOL, COLOR

◎質問者からの返答

うひょー。MYSQLです。すいません。

ありがとうございます。


2 ● iken_jp
●20ポイント

はじめまして。どんなDBを使用されているか不明なので一概にはいえませんが、ORDER BY のすぐ後ろに

yomi=’ミドリ’なら0 それ以外は1などと数値を設定して、その結果をソートのキーワードの最初にもってくればよいかと思います。

たとえばこんな感じです。iifとなっているところは各DBによって提供されている関数をしようしてください。

サンプル:Accessで作成

SELECT テーブル1.yomi, テーブル1.kana

FROM テーブル1 order by iif(テーブル1.yomi=’ミドリ’,0,1), テーブル1.yomi ;

◎質問者からの返答

MYSQLを使っています。

再回答頂ければありがたいです。


3 ● llusall
●20ポイント

再回答です。


CASEを使いました。

次のようなSQLでいかがでしょうか?


SELECT * FROM

(

SELECT TBL.*,

CASE

WHEN COLOR = ’ミドリ’ then 0

ELSE 1

END WKCOL

FROM XXXXXX TBL

)

ORDER BY WKCOL, COLOR

◎質問者からの返答

ありがとうございます。

私には結構難しいようです。

今は、こんな感じになっているのですが、

これを上記に当てはめると、どのようになりますか?

SELECT hana, yomi FROM kadan WHERE tane = ’$abc’ ORDER BY yomi


4 ● iken_jp
●20ポイント

MySQLを使用されているのであれば、以下でOKかと思います。また、’ミドリ’以外にも順番を設定する必要があるときには「when ’ムラサキ’ then 1」のように条件式を追加することで、例外的な処理ができると思います。その場合にはelseの数値を加算してください。

yomiが「ミドリ」と「ムラサキ」以外のレコードは2とすることでソート順が後ろになります。


Select

kadan.hana,

case kadan.yomi

when ’ミドリ’ then 0

when ’ムラサキ’ then 1

else 2

end sortkey

From

kadan

group by

sortkey, kadan.yomi

◎質問者からの返答

ありがとうです。

無事に出来ました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ