您的位置:首页 > 数据库 > MySQL

mysql获取随机数据的一个纳闷的问题

2010-06-21 14:41 633 查看
原文:http://www.liangpeng.net/y2010/m06/mysqlhuoqusuijishujudewenti_1212.html 后期会维护

记得以前找到过方法,而且可用,忘记了,重新google,发现网上提供的方法,有些问题:
一个简单的实现如下:
SELECT * FROM `table`

WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM
`table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM
`table`)))

ORDER BY id LIMIT 1;

简化测试可以写为:select * from `table` where id>=(select rand()*(select
max(id) from `table`)) limit 10
据我测试mysql5.1
如果table有20000条数据,基本没有可能获取到一条大于1000的数据,我也搞不清楚原因,难道是我的mysql版本问题?真是奇怪了。继续测
试。

将limit 1
改为10后,结果发现,返回的数据依然不能超过1000,而且结果的id不连续,则说明mysql是逐条执行了where的rand,即执行了20000
次,这是我的估计,毕竟我不是mysql专家,不知道如何研究。即便是这样,那么每条的几率依然应该是1/20000分之一的,为何结果却出乎意料?

换了一个mysql服务器,5.1.41,结果依然如此。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: