php程序提机取Myaql的数据的时候,如何才能在安ID安排序的前200个数据中随机读取20个,并且取出来的数据没有重复(原数据是有重复的)。麻烦大师们解答一下。 Thank you!
先从数据库中取出200打记录的ID,然后放入数组,随机打乱数组,然后按数组元素查询数据库。
<?php //本程序运行于PHP5.0以上版本通过
$array=array();
$query=”SELECT id from table ORDER BY id DESC LIMIT 0,200”; //table为表名
$result=mysql_query($query);
$num_rows=mysql_num_rows($result); //返回查询到的记录条数
while($row=mysql_fetch_array($result))
{
$array[]=$row['id']; //将字段内容读到数组中
}
$rand_keys=array_rand($array,$num_rows); //将数组随机打乱
for ($i=0;$i<20;$i++) //这行设置从数组中取出几个元素,这里是取20个
{
$id=$array[$rand_keys[$i]]; //取数组中的第i个元素
$query=”select * from table where id=’$id’”;//查询数据库
$result=mysql_query($query);
$num=mysql_fetch_assoc($result);
……
}
//省略的内容为你自己的查询数据库的程序了。
?>
<?php //本程序运行于PHP5.0以上版本通过
$array=array();
$query=”SELECT id from table ORDER BY id DESC LIMIT 0,200”; //table为表名
$result=mysql_query($query);
$num_rows=mysql_num_rows($result); //返回查询到的记录条数
while($row=mysql_fetch_array($result))
{
$array[]=$row['id']; //将字段内容读到数组中
}
$rand_keys=array_rand($array,$num_rows); //将数组随机打乱
for ($i=0;$i<20;$i++) //这行设置从数组中取出几个元素,这里是取20个
{
$id=$array[$rand_keys[$i]]; //取数组中的第i个元素
$query=”select * from table where id=’$id’”;//查询数据库
$result=mysql_query($query);
$num=mysql_fetch_assoc($result);
……
}
//省略的内容为你自己的查询数据库的程序了。
?>
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-04-21
你先计算20个小于200不重复的随机数 放入一个数组 然后循环他们作为查询条件 得出结果
第2个回答 2009-04-21
用ORDER BY RAND();
加入你的表名是users
Select * From users Order By Rand() Limit 20;
即可随机选出20个
加入你的表名是users
Select * From users Order By Rand() Limit 20;
即可随机选出20个