[PHP-users 12998] PostgreSQLでランダムに1行だけ抜き出す方法

php-users@php.gr.jp php-users@php.gr.jp
Tue, 04 Feb 2003 19:05:01 +0900


こんにちは、いつもお疲れ様です。kisumiです。

PostgreSQL7.2.3とPHP4.3にて表題の通り「PostgreSQLでランダムに1行だけ抜き
出す方法」を模索しているのですが、上手く辿り着けません。

SQL系のMLに行けと言われてしまいそうですが、よろしくお願い致します。

それぞれの行には通し番号をつけていますので、これを利用して抽出しようとし
ています。


//私はまずPHPで
//1桁の整数をランダムに生成

$i = rand(0,9);		


//次にPostgreSQLにて通し番号項目「_no_」を
//先ほどの1桁乱数「$i」を用いて下一桁の物を対象に抽出

select _no_ * from _table_name_ where _no_ like '%$i'



このように、いきなり全体から抽出する事をさけ、比率でいうところの1/10に絞
り込んでいます。例えば下一桁が「5」のものだけを抽出する事というような事
が出来ます。

そしてここからが問題なのですが、いったいどうして良いのか困っています。

最終的に「ランダムに1行」を抜き出す事を目的としていますので、PHPでいう
ところの

shuffle();

なんかを使えると理想的なのですが。。。一定の規則性が生じては困りますので。


どなたかアドバイスをお願い致します。どうぞよろしくお願い致します。