我有一个数据库表,其中包含约1.6亿行。
该表有两列: id
和listing
。
我只需要使用PHP从listing
列中显示1000个随机行并将它们放入<span>
标记中。像这样:
<span>Row 1</span>
<span>Row 2</span>
<span>Row 3</span>
我一直在尝试这样做,ORDER BY RAND()
但是要花这么长时间才能在如此大的数据库上加载,而且我找不到其他解决方案。
我希望有一个快速/轻松的方法来做到这一点。我无法想象仅回显1000个随机行是不可能的……谢谢!
ORDER BY
RAND()是一个可以在小型数据库上正常运行的mysql函数,但是如果您运行的行大于10k,则应在程序内部构建函数,而不要使用mysql预制函数或以特殊方式组织数据。
我的建议:通过自动增量使mysql数据保持索引id
,或添加其他增量和唯一行。
然后构建一个选择函数:
<?php
//get total number of rows
$result = mysql_query('SELECT `id` FROM `table_name`', $link);
$num_rows = mysql_num_rows($result);
$randomlySelected = [];
for( $a = 0; $a < 1000; $a ++ ){
$randomlySelected[$a] = rand(1,$num_rows);
}
//then select data by random ids
$where = "";
$control = 0;
foreach($randomlySelected as $key => $selectedID){
if($control == 0){
$where .= "`id` = '". $selectedID ."' ";
} else {
$where .= "OR `id` = '". $selectedID ."'";
}
$control ++;
}
$final_query = "SELECT * FROM `table_name` WHERE ". $where .";";
$final_results = mysql_query($final_query);
?>
如果缺少该1.6亿个数据库中的某些增量ID,那么如果一个随机选择的ID数组少于所需数量,则可以轻松地添加一个函数来添加另一个随机ID(可能是while循环)。
让我知道您是否需要其他帮助。
问题内容: 我想从特定查询中回显所有内容。如果echo $ res我只能得到字符串之一。如果更改第二个mysql_result参数,则可以得到第二个,第二个等,但我想要的是所有这些,一个接一个地回显。如何将mysql结果转换为可以使用的结果? 我试过了: 问题答案:
问题内容: 我有一个带有这样的树的firebase数据库 等等… 在我的应用程序中,用户下载项目,而项目下载时,电视主题将从URL播放。当单个项目发生价值事件时,我可以使其正常运行。我希望它从列表中随机选择一个值。如何做到这一点? 由于我的应用程序不包含任何内容,因此编辑可以使用回收视图方法 这是我的单项代码 问题答案: 要解决此问题,请使用以下代码行: 然后使用循环使用随机数提取该值:
本文向大家介绍如何从MySQL数据库中选择随机记录?,包括了如何从MySQL数据库中选择随机记录?的使用技巧和注意事项,需要的朋友参考一下 为此,您可以使用ORDER BY RAND LIMIT。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是从MySQL数据库中选择随机记录的查询- 这将产生以下输出-
有人能帮我做这个吗?
问题内容: 如何填充一个int列(当前为空),其中包含不带重复项的随机数? 问题答案: 我想您可以使该列成为防止重复的主键,尽管这是一种hack。您可以稍后删除密钥。
问题内容: 问题答案: 请参阅order_by docs。还要注意,这种方法的伸缩性不好(实际上,伸缩性非常好)。