当前位置: 首页 > 面试题库 >

如何从数据库中回显随机行?

商飞尘
2023-03-14
问题内容

我有一个数据库表,其中包含约1.6亿行。

该表有两列: idlisting

我只需要使用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。还要注意,这种方法的伸缩性不好(实际上,伸缩性非常好)。