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]