ホームページ >php教程 >php手册 >MySQL データベース テーブルからランダム データを取得するコード

MySQL データベース テーブルからランダム データを取得するコード

WBOY
WBOYオリジナル
2016-06-13 12:31:11905ブラウズ

MySQL テーブルからランダムなデータを取得する方法
この問題については以前グループで議論しましたが、mysql の構文は非常に興味深いものです

彼らは当初、PHP を使用してそれを実現したいと考えていました。ランダム性がありますが、複数のレコードが取り出されました。

マニュアルをめくって、タスクを完了できる次のステートメントを見つけました。

SELECT * FROM table_name ORDER BY rand() LIMIT 5;

rand はマニュアルで次のように説明されています:
RAND()
RAND(N)
0 から 1.0 の範囲のランダムな浮動小数点値を返します。整数パラメータ N が指定されている場合、それがシード値として使用されます。
sql>select RAND(); 0.5925
sql>select RAND(20); > 0.1811
sql> select RAND();
- -> 0.2079
sql> select RAND(); ORDER BY は列を再計算します。回。ただし、MySQL3.23 では、 SELECT * FROM table_name ORDER BY RAND() を実行できます。これは、 SELECT * FROM table1,table2 WHERE a=b AND c
しかし、8,000 レコードのテーブルの場合、1 回の実行に 0.08 秒かかり、少し遅いです。

後で 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

実行効率には 0.02 秒が必要です。残念ながら、このような処理は mysql 4.1.* 以降でのみサポートされます。サブクエリ .

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。