MySQLの同じ(ランダムな)レコードから2つの列を選択する最速の方法は何ですか?

mysql php sql
MySQLの同じ(ランダムな)レコードから2つの列を選択する最速の方法は何ですか?

同じレコードから、ランダムに1組の列を取得します。 ただし、ランドは非常に非効率的であると聞いたため、別の方法を使用したいと思います。 (http://akinas.com/pages/en/blog/mysql_random_row/を含む多くの記事がそう主張しています)。

だから、私のタイトルはほとんどすべてを語っています。 例:レコード:+ 12、ジェームズ、クラリネット、チキン+ 16、ビリー、ドラム、ベーコン+ 15、シェーン、ギター、ピザ

システムはランダムにレコードを選択します。 次に、「$ firstnameという名前の男の子は$ favoritefoodが好きです」とエコーします。

そんな感じ。 助けて?

  1  1


ベストアンサー

SQLインジェクションに関する標準免責事項。 これは機能するはずですが、私は試していませんでした:

// Get the number of rows in the table
$count = mysql_fetch_assoc(mysql_query('SELECT COUNT(`id`) AS `count` FROM `table`'));
// Use those to generate a random number
$rand = rand(1,$count['count']);
// Select the two columns we need, and use limit to set the boundaries
$query = 'SELECT `firstName`, `favoriteFood` FROM `table` LIMIT '.$rand.',1';
// Run the query
if(($result = mysql_query($query)) !== FALSE) {
    // Dump the result into two variables
    list($firstname, $favoritefood) = mysql_fetch_assoc($result);
    // Echo out the result
    echo 'A boy named '.$firstname.' likes '.$favoritefood;
}

1


これはどうですか ?

select ... from tableT limit $i,1

$ iは0からtableTの行数の間の乱数でなければなりません

0


タイトルとURLをコピーしました