MySQLデータベーステーブルからランダムデータのコードを取り出します。


MySQL どのように表からランダムデータを取り出すか? 
以前は群の中でこの問題を討論したことがあって、比較的に面白いです。mysqlの文法は本当に面白いです。
彼らはPHPを使ってランダムを実現したいと思っていましたが、複数を取り出して2回以上調べたいようです。
マニュアルをめくって、次の文を見つけたら、任務を完成できます。
SELECT * FROM テーブルname ORDER BY。 ランド() LIMIT 5;
ラドはマニュアルでこう言います。
RAND() 
RAND(N) 
0から1.0の範囲内のランダム浮動小数点の値を返します。整数パラメータNが指定されている場合、シード値として使用されます。 
mysql> プロジェクト RAND()
        -> 0.925
mysql> プロジェクト RAND(20)
        -> 0.811
mysql> プロジェクト RAND(20)
        -> 0.811
mysql> プロジェクト RAND()
        -> 0.2079
mysql> プロジェクト RAND()
        -> 0.7888
あなたはORDERにいてはいけません。 BY子文はRAND()の値で列を使用します。ORDERのためです。 BYは複数回列を計算します。しかし、MySQL 3.23では、あなたが行うことができます。 SELECT * FROM テーブルname ORDER BY。 RAND()は、SELECTから得られる有利性があります。 * FROM テーブル1 WHERE a=b AND cでも試してみました。8千条の記録表は一回実行すると0.08が必要です。 sec、遅くなりました
その後、googleを教えてもらいました。下記のコードをもらいました。

SELECT * 
 FROM table_name AS r1 JOIN 
    (SELECT ROUND(RAND() * 
           (SELECT MAX(id) 
            FROM table_name)) AS id) 
    AS r2 
WHERE r1.id >= r2.id 
ORDER BY r1.id ASC 
LIMIT 5;
実行効率は0.02が必要です。 残念なことに、mysqlしかありません。 4.1.*以上がこのようなサブクエリをサポートしている。 
以下はphpコードです。

<?
//             
$s = isset( $_GET['s'] )?$_GET['s']:0;
$e = isset( $_GET['e'])?$_GET['e']:50;
$count =85000;
if( $s < $count )
{
 $sql = "select * from    _info where isget =0 order by id desc limit $s,$e ";
 $query = mysql_query( $sql );
 while( $rs = mysql_fetch_array( $query ) )
 {
 $id = $rs['id'];
 $sss = $rs['sss'];
 $typeid = $rs['typeid'];
 $isget = $rs['isget'];
 $sql = "insert into    _info_bak (id,   ,typeid,isget) values('$id','$sss','$typeid','$isget')";
 mysql_query( $sql ) ;
 echo $sql;
 //exit;
 $sqlu = "update    _info set isget=1 where id =".$rs['id'];
 mysql_query( $sqlu );
 }
 echo '<meta http-equiv="refresh" content="0;url=rand.php?s='.($s+50).'&e=50">      ,   '.$s.' ......';
}
else
{
 echo '         <a href=rand.php>       </a>';
}
?>