ORDER BY yomi
というふうに読み仮名でソートしているのですが、
特定の言葉だけ、ソートに関係なく一番上に表示したい場合、
どのような方法があるのでしょうか?
アオ
アカ
キイロ
ミドリ
ムラサキ
「ミドリ」はソートに関係なく、一番に表示させたい
ミドリ
アオ
アカ
キイロ
ムラサキ
という感じにしたいのです。宜しくお願いします。
オラクルですが、DECODEを使いました。
こんな感じでいかがでしょうか?
SELECT * FROM
(
SELECT TBL.*, DECODE(COLOR,’ミドリ’,0,1) AS WKCOL FROM XXXXXX TBL
)
ORDER BY WKCOL, COLOR
はじめまして。どんな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を使っています。
再回答頂ければありがたいです。
再回答です。
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
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
ありがとうです。
無事に出来ました。
うひょー。MYSQLです。すいません。
ありがとうございます。