我将保持它的简单性:
1)我有一个包含2列的数据库- word和text
2)每个单词有近似值。与之关联的600,000行文本。
3)我是一个转而使用php和mysql的.net用户--所以我有一点知识。
我的要求:
1)我将通过表单传递单词
2)表单将连接到数据库,并应显示600,000行中的2000行,这应该是不重复的
我目前的进展如下:
<?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行-它们应该是非重复的。
有什么需要帮忙的吗?
发布于 2011-11-30 13:16:55
如下所示:
$result = mysql_query("SELECT DISTINCT * FROM Data WHERE word='health' ORDER BY RAND() LIMIT 2000");如上所述,使用MySQL选择2000行随机行比使用PHP更有效。
还要注意,SELECT DISTINCT将只选择唯一的行,您可能无论如何都应该删除这些行。如果您指定列名而不是使用*,那么您可以选择希望哪些列是唯一的-尽管这在一定程度上还取决于表的构建方式。
发布于 2011-11-30 13:20:47
我想这就是你想要的方式
SELECT * FROM Data WHERE WHERE word='health‘ORDER BY RAND() LIMIT 0,2000
这将为您提供按任意顺序排序的2000条记录
发布于 2011-11-30 18:23:28
您需要将行结果拆分为数组(因为它当前是一个字符串),然后您可以随机选择2000行。
假设文本使用like分隔符作为行分隔符,它将如下所示:
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()函数。
https://stackoverflow.com/questions/8321451
复制相似问题