方式一:
这种方式不适合id不连续的方法:
$data_start = date('Y-m-d 00:00:00',time());// $data_now = date('y-m-d H:i:s',time());// $list = Db::connect('xxx')->name('top_douyin')->where('update_time','>=',$data_start)->order('rand()')->limit(10)->select()->toArray();$num = 8; //需要抽取的默认条数$table = 'top_xxx'; //需要抽取的数据表$countcus = Db::connect('xxx')->name($table)->where('update_time',$data_start)->max('id'); //统计某个字段最大数据$min = Db::connect('xxx')->name($table)->where('update_time',$data_start)->min('id'); //统计某个字段最小数据// dump(777711,$countcus,$min);exit;$i = 1;$flag = 0;$ary = array();while($i<=$num){$rundnum = rand($min, $countcus);//抽取随机数// dump(777713,$rundnum,$min,$countcus);exit;if($flag != $rundnum){//过滤重复echo $rundnum.'<br>';if(!in_array($rundnum,$ary)){$ary[] = $rundnum;$flag = $rundnum;}else{// $i--;}$i++;}}dump(777714,$ary);// $list = Db::connect('xxx')->name($table)->where('id','in',$ary,'or')->column('title','id');// $list = Db::connect('xxx')->name($table)->where('id','in',$ary)->column('title','id');$list = Db::connect('xxx')->name($table)->where('id','in',$ary)->field('title,id')->select()->toArray();dump(777715,$list);exit;// return json_encode(['200'=>$list],JSON_UNESCAPED_UNICODE);return json_encode($list,JSON_UNESCAPED_UNICODE);
方式二:
SELECT * FROM ny_top_douyin ORDER BY rand() LIMIT 6;// 随机获取6条数据$data = Db::name('xxx')->orderRaw('rand()')->limit(6)->select();
