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

php-users@php.gr.jp php-users@php.gr.jp
Wed, 05 Feb 2003 10:48:22 +0900


発言元のkisumiです。

皆様のお陰で解決しました。ありがとうございました。


その後、PHPでのランダム化の方法も思いついたのですが、やはりSQL側で処理さ
せるに越した事はないと思います。


参考までに私が思いついたPHPでのランダム化を書き残しておきます。・・・し
かし、試してません(笑)。構想だけですが、何かに役立てばと思います。


//PHPにて一桁の乱数取得

$i = rand(0,9);		

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

$sql = "select _no_ * from _table_name_ where _no_ like '%$i';";
$res = pg_query($conn,$sql);

//取得した行数をカウント

for($res_count = 0;$res_count < pg_num_rows($res);$res_count++);

//取得した行数を最大値として乱数を取得
//これで取得した行の中よりランダムに1行取得が可能に。

$i2 = rand(0,$res_count);	
$_no_ = pg_result($res,$i2,"_no_");


一番最初に乱数を取得する時点で規則性を持たせる事も可能だと思いますし、ま
ったくのランダム化も可能だと思います。