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]