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

mysql:12506

From: Shinya Kawaji <Shinya Kawaji <kawaji@xxxxxxxxxx>>
Date: Wed, 23 Nov 2005 09:08:29 +0900
Subject: [mysql 12506] Re: ランダムなデータ取得について

かわじ、です。


> また自分のブログで
> set @id = floor(rand()*n)+1;
> select COL from TABLE_NAME where id = @id;
> と言う方法を提示しましたが、これだとidに欠番があったりした場合には
> 使えないと言う欠点が。
> 
> これらを上手く解決する手段を教えて頂けたらと思います。

単純に考えて、「欠番の場合は、より少ない id のものを取得する」で、
いかがでしょうか。

select @id := floor(rand()*max(id))+1 from TABLE_NAME;
select COL from TABLE_NAME where id <= @id order by id desc limit 1;

厳密にはランダムといえなくなりますが(欠番の一つ前の行と、最終行が有利)、
それが気になる場合は、アプリケーション側で「欠番なら id 取得からやり直し」
としても良いかもしれません。



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

     12481 2005-11-18 20:52 [jazzanova <jimibandr] ランダムなデータ取得について            
->   12506 2005-11-23 09:08 ┗[Shinya Kawaji <kawaj]