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]