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篇文章