从mysql数据库中提取5条随机记录[关闭]
Posted
技术标签:
【中文标题】从mysql数据库中提取5条随机记录[关闭]【英文标题】:Pull 5 random records from mysql database [closed] 【发布时间】:2012-11-12 21:18:16 【问题描述】:我正在尝试编写一个 php / mysql 脚本,该脚本将从数据库中提取 5 条随机记录并显示它们。目前,我正在使用以下方法将一条记录拉出并显示在一个模块中,但我不确定如何一次仅拉出 5 条。我将在数据库中总共有大约 200-300 条记录。
我目前正在使用以下代码随机拉出单条记录:
<?php
$result = mysql_query("SELECT * FROM `zgjzb_chronoforms_data_submitbusiness` ORDER BY RAND() LIMIT 0,4;");
$row = mysql_fetch_array($result);
?>
【问题讨论】:
LIMIT 5
。不要使用mysql_*,不要在大表上使用ORDER BY RAND
使用while循环,这在PHP manual中的许多示例中清楚地显示了
重复:***.com/questions/9945691/…
@tereško - 这是重复的,但请注意三个答案中的两个(包括接受的答案)很糟糕。这个问题唯一好的答案是this one,但它需要一个存储过程。
@TedHopp ,是的,它需要一个存储过程,因为在 SQL 中快速选择 N
unique 条目是一个不完全微不足道的问题。
【参考方案1】:
您不想使用ORDER BY RAND()
。 MySQL 必须建立一个临时表。如果你的表有一个唯一的 id 列,这样的事情会更好:
SELECT * FROM `zgjzb_chronoforms_data_submitbusiness`
WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` )
ORDER BY id LIMIT 1;
请参阅this blog post 了解其他在 php 中运行良好的方法。
【讨论】:
终于有个不错的答案了。谢谢你 谢谢,这会拉出 5 条记录吗?还是我只是将 LIMIT 更改为 5 条? @IainSimpson - 它将拉出一条记录。您不想使用LIMIT 5
,因为它会提取 5 个 连续 记录,这些记录并不是真正随机的。不过,它足够便宜,您可以重复多次,直到获得 5 条唯一记录。
@Dagon - 我也不打算对它进行基准测试。 :)
阻止你!我诱骗你的邪恶计划失败了! :-)以上是关于从mysql数据库中提取5条随机记录[关闭]的主要内容,如果未能解决你的问题,请参考以下文章