我想使用php从我的SQL表中请求5个随机行.例如,我需要:
mysql_query("SELECT * FROM catalogue >> not sure what goes here << LIMIT 5");
Run Code Online (Sandbox Code Playgroud)
Phe*_*nix 21
SELECT * FROM catalogue order by RAND() LIMIT 5
Run Code Online (Sandbox Code Playgroud)
编辑:
值得注意的是,请注意在具有大量行的表上使用rand()会很慢.这实际上可能会使服务器崩溃.
一些解决方案
MediaWiki使用了一个有趣的技巧(对于维基百科的特殊:随机特征):带有文章的表格有一个带有随机数的额外列(在创建文章时生成).要获得一篇随机文章,请生成一个随机数,并获得随机数列中下一个更大或更小(不记得哪个)值的文章.使用索引,这可以非常快.(MediaWiki是用PHP编写的,是为MySQL开发的.)
但这仅适用于单个随机行.
假设该表具有AUTO INCREMENT,则可以获得最大的ID
SELECT id FROM catalogue ORDER BY id DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)
和最小的ID
SELECT id FROM catalogue ORDER BY id ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)
使这成为可能
$randomId = mt_rand($smallestId, $biggestId);
$randomSql = mysql_query("SELECT * FROM catalogue WHERE id='$randomId'");
Run Code Online (Sandbox Code Playgroud)
对于五行,您可以创建五次随机ID.