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

mysql:3285

From: Takeharu Masuda <Takeharu Masuda <tac@xxxxxxxxxx>>
Date: Sun, 18 Feb 2001 11:36:02 +0900
Subject: [mysql 03285] Re: 無作為に行を抽出する方法


On Sun, 18 Feb 2001 00:51:59 +0900
"s.ara" <ml@xxxxxxxxxx> wrote
at [mysql 03284] 無作為に行を抽出する方法
(<010201c098f9$b4f8b250$2dcefea9@NRGZ4LYX0XM212>):

> 無作為にテーブル上の1行を抽出したいのですが
> 現在、以下の方法を使用しています。
> 
> SELECT * FROM table;
> の実行結果をPHP上で1つ選んでいる。
> 
> この方法で実現はできるのですが、テーブルサイズが大きくなるほど
> 処理が重くなってしまいます。
> 
> SQLのみで取り出すことは可能でしょうか?

 3.23 であれば、こんな芸当が出来ますね(確認はしていませんが……)。

 SELECT * FROM table ORDER BY RAND() LIMIT 1;

#RAND() 関数の説明の部分を参照のこと


 他の手としては、まず全体の行数をカウントしておいて、その範囲での乱数を
生成、その結果で
 SELECT * FROM table LIMIT 乱数の値, 1
という SQL を生成して発行するとか。
-- 
written by Takeharu Masuda <tac@xxxxxxxxxx>
with Thinkpad 235 - called "Chandra II" / "Clavius"
2001/02/18 11:31:57


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

      3218 2001-02-09 02:23 ["TOYOSHIMA,Masayuki"] Re: 日本語正規表現 UDF                  
      3252 2001-02-14 11:06 ┗["TOYOSHIMA,Masayuki"]                                       
      3257 2001-02-15 11:02  ┣[Akihiko Shinohara <s]                                     
      3265 2001-02-15 21:42  ┗[とみたまさひろ <tomm]                                     
      3283 2001-02-17 21:10   ┗["TOYOSHIMA,Masayuki"]                                   
      3284 2001-02-18 00:51    ┣["s.ara" <ml@xxxxxxxx] 無作為に行を抽出する方法        
->    3285 2001-02-18 11:36    ┃┗[Takeharu Masuda <tac]                               
      3286 2001-02-18 19:05    ┃ ┗["s.ara" <ml@xxxxxxxx]                             
      3287 2001-02-19 01:18    ┗[とみたまさひろ <tomm]