如何在数据库中随机取出1条记录?PHP
已经找到一种方法了,分享一下mysql_result(mysql_query("selectdatafromsqlorderbyrand()limit5"),0);如果能...
已经找到一种方法了,分享一下
mysql_result(mysql_query("select data from sql order by rand() limit 5"),0);
如果能改进麻烦告知~ 展开
mysql_result(mysql_query("select data from sql order by rand() limit 5"),0);
如果能改进麻烦告知~ 展开
展开全部
/**
* MySQL 随机取记录
*
* @param $t 表
* @param $c ID列,默认为id
* @param $n 取多少个
* @param $w 条件语句
* @param $f bool 是否强制以多维数组形式返回,默认false
* @return array 取1个直接返回结果数组(除非$f为true),取>1个返回多维数组,用foreach取出
*/
function rand_row($t , $c = 'id' , $n = '1', $w = '' , $f = false) {
$m=new mysqli(mysqli信息,自行查找php文档);
if (!empty($w)) {
$w = ' AND '.$w;
}
$sql = "SELECT * FROM `{$t}` WHERE {$c} >= (SELECT floor(RAND() * (SELECT MAX({$c}) FROM `{$t}`))) {$w} ORDER BY {$c} LIMIT {$n};";
$xq = $m->query($sql);
$r = array();
while ($x = $m->fetch_array($xq)) {
$r[] = $x;
}
if ($f == false && count($r) == 1) {
return $r[0];
} else {
return $r;
}
}
2015-02-19
展开全部
你这种写法是正确的,也是最简单的,但唯一的问题就是只适合数据表储存的数据量比较小的情况下!
如果数据库存在大量记录,也就是几千几万几十万条的时候,这种写法就显然不合适了,会造成sql语句的大量重复运行,拖慢程序的运行。
改进方法嘛,就是使用子查询以及join子语句,效率更高!
如果数据库存在大量记录,也就是几千几万几十万条的时候,这种写法就显然不合适了,会造成sql语句的大量重复运行,拖慢程序的运行。
改进方法嘛,就是使用子查询以及join子语句,效率更高!
追问
那么怎么写呢,求改进
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-02-19
展开全部
好像有个rans
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询