如何从数据库中随机的取得一条未被读取的条目?

以mysql数据库为例,我希望在一个页面上显示数据库中的某一个条目,要求每次刷新页面可以自动从还没有显示过的条目中随机的选取一条进行显示,也就是说显示过的条目就不再显示了... 以mysql数据库为例,我希望在一个页面上显示数据库中的某一个条目,要求每次刷新页面可以自动从还没有显示过的条目中随机的选取一条进行显示,也就是说显示过的条目就不再显示了。有没有什么好的办法和思路可以实现这种要求? 展开
 我来答
badkano
推荐于2016-10-17 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144777 获赞数:885365
团长

向TA提问 私信TA
展开全部

随机读取可用newid(),取一条可用top 1

举例:如在表test中随机抽取一条未被读取的数据,执行语句为:

select top 1 * from test order by newid()

第一次执行结果:

第二次执行结果:

结论:两次执行结果有可能一样,也有可能不一样,也就是实现了随机的效果。

wangzhiqing999
推荐于2016-06-17 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3293万
展开全部
你这个情况,需要解决两个问题点
1、随机取得
2、未被读取

随机取得很简单,在 mysql 里面,使用 ORDER BY rand() 实现随机排序。
然后你再 LIMIT 0, 1 来随机获取 一条就可以了。
例如:
select * FROM 表名 LIMIT 0, 1;

至于 一条未被读取的条目。
这个恐怕要你在 页面那里判断了。
例如第一次访问的时候,认为是 都没有显示过的。
就是
select * FROM 表名 LIMIT 0, 1;
假如获取的结果 为 15

那么刷新页面,下一次执行的 SQL 为
select * FROM 表名 WHERE 列名 NOT IN (15) LIMIT 0, 1;
假如获取的结果为 255

那么刷新页面,下一次执行的 SQL 为
select * FROM 表名 WHERE 列名 NOT IN (15, 255) LIMIT 0, 1;

然后以此类推,直到没有数据。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式