[前][次][番号順一覧][スレッド一覧]

mysql:10663

From: 渡邊昌之 <渡邊昌之 <mark@xxxxxxxxxx>>
Date: Wed, 15 Dec 2004 17:01:01 +0900
Subject: [mysql 10663] Re: SELECTでランダムにレコードを得る方法(再)

渡邊です。

下記の様なサンプルを作ってテストしてみましたが、
FirstもSecondもどちらも全くランダムな結果が返ってきます。
もちろん2度3度と実行しても毎回異なるものが返ってきます。
環境はLocalでPerl 5.6.1 DBI+mysqlDBDです。

test というテーブルは、idというフィールドだけがあって、1から1700
くらいまでの値が順に入っているだけのものです。
==============================================================
$random_query="select id from test order by rand() limit 10";
$sth=$master_dbh->prepare($random_query);
printf("First\n");
$sth->execute;
while($r=$sth->fetchrow_arrayref){
  printf("%4d\n",$$r[0]);
}

printf("Second\n");
$sth->execute;
while($r=$sth->fetchrow_arrayref){
  printf("%4d\n",$$r[0]);
}
===============================================================
とりあえず、ステートメントハンドルは一度prepareしただけで
executeだけ行うということをした結果、毎回異なる結果を出しました。

どうして同じような値が返ってくるんでしょう。

どういうプログラムで実行されているかわからないので、これ以上はわかりませんが
たとえば上記のプログラムで実験してみてたら、結果はどうなるでしょう。

ml_mysql@xxxxxxxxxx wrote:
> 私も、コンソールでやってみたところ、全く違う数字の列が出てきました。
> これならOKです。
> 
> うーーん どこかでキャッシュされているみたいですね。
> 
> 
> クエリーを
> SELECT a,b,c,d FROM table WHERE b="hogehoge" ORDER BY RAND()
> 
> と換えましたが、
> 最初の2レコードは、同じ順序でした。
> 
> PERLは 
> Perl version 5.8.0 です。
> 
> よろしくお願いします。

_______________________________________
渡邊昌之
mark@xxxxxxxxxx
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[前][次][番号順一覧][スレッド一覧]

     10570 2004-11-30 17:35 [<ml_mysql@xxxxxxxxxx] SELECT でランダムにレコードを得る方法   
     10571 2004-11-30 17:40 ┣[遠藤 俊裕 <endo@xxxx]                                       
     10572 2004-11-30 18:13 ┃┗[<ml_mysql@xxxxxxxxxx]                                     
     10573 2004-11-30 18:29 ┃ ┣["waya" <wayama@xxxxx]                                   
     10574 2004-11-30 18:31 ┃ ┣[遠藤 俊裕 <endo@xxxx]                                   
     10577 2004-11-30 22:31 ┃ ┃┗[<ml_mysql@xxxxxxxxxx]                                 
     10575 2004-11-30 18:31 ┃ ┗[Seiichi YANAI <yanai]                                   
     10576 2004-11-30 20:48 ┣[Daiju <d.is.here@xxx]                                       
     10659 2004-12-15 14:56 ┗[<ml_mysql@xxxxxxxxxx] Re: SELECT でランダムにレコードを得る方法(再)
     10660 2004-12-15 15:28  ┗[渡邊昌之 <mark@xxxxx]                                     
     10661 2004-12-15 16:24   ┗[<ml_mysql@xxxxxxxxxx]                                   
     10662 2004-12-15 16:55    ┣[SUGAWARA Hajime <sug]                                 
     10669 2004-12-15 20:20    ┃┗[<ml_mysql@xxxxxxxxxx]                               
->   10663 2004-12-15 17:01    ┗[渡邊昌之 <mark@xxxxx]