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

MYSQLのクエリを教えてください。

table_testにa,b(共にINT)のカラムがあるとします。
この時、a÷bでソートして検索したいのですが
直感的にやった
SELECT * FROM table_test ORDER BY (a/b)
では正しく出力されませんでした。

新しくカラムc=a/bを追加する、というのはナシで
・SELECT文を駆使
・ビュー?を利用
など簡単な方法でソートを実現するクエリーを教えてください。

●質問者: yshkw
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL SELECT カラム クエリ ソート
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● chuken_kenkou
●20ポイント
select * from table_test order by a/b

で「正しく出力されなかった」というのは、具体的にどうなるということでしょうか?

MySQL 5.0でやってみましたが、期待通り表示されました。

a/bの結果を仮の列として、表示してみると、分かりやすいと思います。

select * from (select a,b,a/b as ab from tab1e_test) as x order by ab
◎質問者からの返答

ちょっとむずかしめですね


2 ● Yota
●20ポイント

SELECT * FROM table_test ORDER BY (a/b) ;

カラムが3個だけと仮定すると

SQL> SELECT a,b,a/b FROM table_test ORDER BY 3 ;

でどうでしょう。

3は3個目なのでa/bの位置に合わせて増減させてください。

◎質問者からの返答

「ORDER BY 3」初めてみました


3 ● F-15X
●40ポイント

質問にあるSQLで上手くいくと思うのですが、

サブクエリを使うと次のようになります。

select * from (

    select * , (a / b) as SortField 

    from table_test

)tbl 

order by SortField

◎質問者からの返答

サブクエリというのがあるのですね。


どうやらbが0の時があったようでした。

解決しました。

関連質問


●質問をもっと探す●



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