SQL 随机取记录
1.7 里新增了随机读取的功能,同时支持三种数据库
这里举例随机取 5 篇文章:
$sql = $zbp->db->sql->get()->select($zbp->table['Post']) ->where('=','log_Type',0) ->random(5) ->sql;
-- mysql 生成的 sql SELECT * FROM zbp_post WHERE log_Type = '0' AND log_ID >= (SELECT FLOOR( RAND() * ( (SELECT MAX(log_ID) FROM `zbp_post`)- (SELECT MIN(log_ID) FROM `zbp_post`)) + (SELECT MIN(log_ID) FROM `zbp_post`))) LIMIT 5 -- pgsql 和 sqlite 生成的 sql SELECT * FROM zbp_post WHERE log_Type = '0' ORDER BY Random() LIMIT 5
使用 GetList 函数随机获取文章的方法:
GetList(null,null,null,null,null,null,array('random'=>5)); // 1.7 以更高版本的GetList加以改进了 GetList(array('random'=>4,'cate'=>1)); // 获取分类1下的随机4篇文章