dポイントプレゼントキャンペーン実施中!

MySQLでの近似値順での値の取得について質問させてください。

現在 store テーブルに、

店名  番号
hanaya 138
sakaya 150
denkiya 140
honya 125
biyouin 166
izakaya 179
hotel 191

上記のようなフィールドとレコードがあります。
ここの番号フィールドから"141"という値に近い順に並べ替えて結果を取得したいと思っています。

※141に近い順に並び替え

denkiya 140 (-1なので一番近い)
hanaya 138 (-3なので二番目に近い)
sakaya 150 (+9なので三番目に近い)
honya 125 (-16なので四番目に近い)
biyouin 166 (+25なので五番目に近い)
izakaya 179 (+38なので六番目に近い)
hotel 191 (+50なので七番目に近い)

上記のような結果にしたいです。
この結果を得るにはどのようなSQLを書けば良いのでしょうか?

よろしくお願いします。

A 回答 (1件)

こんばんわ、ご質問の結果を返すには以下のようなSQLで得られると思います。



SELECT 店名, 番号, 番号 - 141 as 差分
FROM store
ORDER BY abs(番号 - 141);

absは絶対値を求める関数です。
差分の絶対値(すなわち指定の数値からの距離)を小さい順に並べました。
    • good
    • 0
この回答へのお礼

ありがとうございます。

ご回答いただいた内容で無事に求める結果が取得できました。

お礼日時:2010/07/23 00:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す