随机取n条数据,使用order by rand() ,数据量不大情况下还OK,表里数据量多就不行了。变换查询方式:
sql语句变换:
SELECT * FROM 表名 WHERE id >= ((SELECT MAX(id) FROM 表名)-(SELECT MIN(id) FROM 表名)) * RAND() + (SELECT MIN(id) FROM 表名) limit 5;
Yii下查询带 where条件使用方法
$query = new \yii\db\Query();
$query->select(‘linkname,question,linkageid,content’);
$query->from(‘question as t1’);
$query->join(“JOIN”,”(SELECT ROUND(RAND() * (SELECT MAX(qid) FROM `question`)) AS id) as t2″);
$query->where(“t1.qid >= t2.id”);
$query->andWhere([‘in’,’linkageid’,$catids]);
//$query->andWhere(“linkageid !=0”);
$query->orderBy(“t1.qid ASC”);
$query->limit($num);
$question_info = $query->all();