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


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

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

回答の条件
  • 1人2回まで
  • 登録:2007/05/19 11:29:00
  • 終了:2007/05/19 21:29:54

回答(3件)

id:chuken_kenkou No.1

chuken_kenkou回答回数722ベストアンサー獲得回数542007/05/19 12:09:00

ポイント20pt
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
id:yshkw

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

2007/05/19 21:29:04
id:Yota No.2

Yota回答回数453ベストアンサー獲得回数282007/05/19 14:46:14

ポイント20pt

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の位置に合わせて増減させてください。

id:yshkw

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

2007/05/19 21:29:03
id:F-15X No.3

F-15X回答回数111ベストアンサー獲得回数132007/05/19 12:06:43

ポイント40pt

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

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

select * from (

    select * , (a / b) as SortField 

    from table_test

)tbl 

order by SortField

id:yshkw

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


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

解決しました。

2007/05/19 21:29:02
  • id:kurukuru-neko
    上記SQLで正常にソート可能です。
    但し、ソートは浮動小数点で計算され昇順に
    ソートされます。
    (MYSQL 3.23.57)

    select *,(a/b) from ww order by (a/b);

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません