首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从记录中读取随机行MySQL-PHP

从记录中读取随机行MySQL-PHP
EN

Stack Overflow用户
提问于 2011-11-30 13:12:36
回答 3查看 448关注 0票数 2

我将保持它的简单性:

1)我有一个包含2列的数据库- word和text

2)每个单词有近似值。与之关联的600,000行文本。

3)我是一个转而使用php和mysql的.net用户--所以我有一点知识。

我的要求:

1)我将通过表单传递单词

2)表单将连接到数据库,并应显示600,000行中的2000行,这应该是不重复的

我目前的进展如下:

代码语言:javascript
复制
<?php
$con = mysql_connect("localhost","text_minx","pwd");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM Data
WHERE word='health'");

while($row = mysql_fetch_array($result))
{
  echo $row['lines'];
  echo "<br />";
}
?>

这显示了所有的行。我想要的是在一个可能的数组中读取$row‘line’,并从其中随机选择2000行-它们应该是非重复的。

有什么需要帮忙的吗?

EN

回答 3

Stack Overflow用户

发布于 2011-11-30 13:16:55

如下所示:

代码语言:javascript
复制
$result = mysql_query("SELECT DISTINCT * FROM Data WHERE word='health' ORDER BY RAND() LIMIT 2000");

如上所述,使用MySQL选择2000行随机行比使用PHP更有效。

还要注意,SELECT DISTINCT将只选择唯一的行,您可能无论如何都应该删除这些行。如果您指定列名而不是使用*,那么您可以选择希望哪些列是唯一的-尽管这在一定程度上还取决于表的构建方式。

票数 3
EN

Stack Overflow用户

发布于 2011-11-30 13:20:47

我想这就是你想要的方式

SELECT * FROM Data WHERE WHERE word='health‘ORDER BY RAND() LIMIT 0,2000

这将为您提供按任意顺序排序的2000条记录

票数 0
EN

Stack Overflow用户

发布于 2011-11-30 18:23:28

您需要将行结果拆分为数组(因为它当前是一个字符串),然后您可以随机选择2000行。

假设文本使用like分隔符作为行分隔符,它将如下所示:

代码语言:javascript
复制
echo $row['lines']; //starts from this line of your code
$data = explode("\n", $row['lines']);
shuffle($data);
$random_lines = array_slice($data, 0, 2000);

不过,这并没有考虑到不重复。如果我正确理解了您的需要,您可以在将其传递给shuffle()之前使用array_unique()函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8321451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档