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