请问php+mysql中如何从数据表student中随机抽取若干条(例如是五条数据)数据?

数据表的id不是连续的,因此用直接产生随机数id可能会不存在,还有其他的方法么?... 数据表的id不是连续的,因此用直接产生随机数id可能会不存在,还有其他的方法么? 展开
 我来答
中链优盟
2012-10-07 · 超过28用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:71.8万
展开全部
直接用select * from student order by rand() limit 5不是一个很好的习惯,这个要考虑到数据库的大小问题,比如,数据量为10W以上,这样查询的效率是非常低的,资源也消耗挺多!你可以考虑在php与mysql结合来实现,比如:先用mysql 的count()计算出student的总条数$sum_num,赋值到php中的变量中,后在php中更具这个总条数进行生成随机数(这里涉及到你的5条数据是否为连续的5条随机数,还是打乱的随机五条),这里如果生成连续的数据就只需要生成一个小于$sum_num-5的随机数就可以了!根据这个随机数进行limit取出5条就可以;如果这里需要生成打乱的随机数,就需要生成5个不相同的并且小于$sum_num随机数,最后根据这些随机数在数据库中查询,第一种情况用到limit 随机数,5;;第二种情况用到in(随机数1,随机数2,随机数3,随机数4,随机数5);在数据量大的情况下,这样的效率和资源消耗的情况下都要比select * from student order by rand() limit 5好得多,当然如果数据量不多的话就用这个也可以!只是给你普及个知识!祝你学习愉快!(这里暂且认为你会用php生成随机数并且这里的php生成的随机数必须为大于0的整型哦,不会的话可以先百度、google,最后可以继续给我留言)!
这里因为你的id会有缺失所以有的方法不适用!就不一一列举了!
追问
您好,非常感谢你的回答,确实给我普及了不少知识,只是想在问下产生的随机数如何从数据表中抽取数据啊?如果采用id和产生的随机数限制会有问题,因为产生的随机数来确定数据id的话,可能会产生不存在的情况,因为我可能会随时从表中删除某条数据这样数据表默认的id就不是连续的了(例如随机数产生了10,但是id为10的这条数据在之前已经删除了)。
追答
这里可能你有一个误区,id和你取的数据在实际意义上没有什么关系!举个例子:比如你用count查询出来的数据为100条,用php生成的随机数为80,而且你取的的数据可以为不是打乱的数据,就可以这样
select * from student limit 80,5就取出了你需要的值!
柏新星
2012-10-07 · TA获得超过131个赞
知道小有建树答主
回答量:226
采纳率:0%
帮助的人:156万
展开全部
select * from student order by rand() limit 5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式