mysql:6350
From: Satoshi Komori <Satoshi Komori <satoshi@xxxxxxxxxx>>
Date: Mon, 7 Oct 2002 22:25:05 +0900
Subject: [mysql 06350] Re: servlet では order by rand() ができない?
2002/10/07 19:44:57 +0900に"城" <sora_iro@xxxxxxxxxx>さんに頂いた 「[mysql 06347] Re: servlet では order by rand() ができない?」への返事です。 komori と申します。 jdk1.3.0_02、win2K、mysql3.23.49で試しましたが、城さんの意図する 結果が出ました。 >動かない場合は >やはりJava側で処理するしかないのですか? そうなってしまいますよねぇ...無駄な処理なんで嫌ですよねぇ...。 >僕は下のように処理しています。 >おかしなところありましたら指摘お願いします。 > >別の処理で 0<num<レコード数 のランダムな数numを取得して >int i = 0; >while(rs.next()){ > if(i == num){ > String aisatsu = rs.getString("tango"); > break; > } > i++; ループ回数が決まっているのであれば、 for(int i=1;i<num;i++){ rs.next(); } String aisatsu = rs.getString("tango"); の方が、無駄なif文の比較回数が減るのではないでしょうか? なお、蛇足ですが、 >[06339]> rs.next(); >[06339]> String resTag = rs.getString("tango"); >の両側をループで囲っていないのは不思議だなと感じたのです。 城さんのプログラムで正しいと思います。 このサンプルで実行されているSQLは1件しか戻りがないので、 1回だけnext()してやればOKなんです。whileで括られていなく てOKです。 というわけで、サンプルプログラムのlimitの使い方も城さんの 意図したもののはずですよ。>山下さん # 「単一」という日本語の解釈の問題ではないでしょうか? 以上 ---
6339 2002-10-07 06:20 ["城" <sora_iro@xxxxx] servlet では order by rand() ができない? 6343 2002-10-07 18:27 ┣["Takashi Yamashita" ] 6344 2002-10-07 18:30 ┃┗["Takashi Yamashita" ] 6347 2002-10-07 19:44 ┃ ┗["城" <sora_iro@xxxxx] 6348 2002-10-07 21:17 ┃ ┣["Takashi Yamashita" ] -> 6350 2002-10-07 22:25 ┃ ┗[Satoshi Komori <sato] 6352 2002-10-08 07:12 ┃ ┗["城" <sora_iro@xxxxx] 6353 2002-10-08 12:06 ┃ ┗[Takeyuki Miyagawa <m] 6361 2002-10-08 17:54 ┃ ┗["城" <sora_iro@xxxxx] 6362 2002-10-08 18:15 ┃ ┗["kosugi" <kosugi@xxx] 6346 2002-10-07 19:05 ┣["kosugi" <kosugi@xxx] 6349 2002-10-07 21:26 ┣["Takashi Yamashita" ] 6363 2002-10-08 18:59 ┣[<rio-t@xxxxxxxxxx> ] 6380 2002-10-09 21:42 ┃┗["城" <sora_iro@xxxxx] 6382 2002-10-09 22:58 ┗["小川 修" <shuogawa] 6392 2002-10-10 13:17 ┗["kosugi" <kosugi@xxx] 6424 2002-10-13 00:28 ┗["shuogawa" <shuogawa] 6425 2002-10-14 00:05 ┗[Tomoyuki Ishino <ish]