[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();
なんかを使えると理想的なのですが。。。一定の規則性が生じては困りますので。
どなたかアドバイスをお願い致します。どうぞよろしくお願い致します。