文章标签 ‘随机’

记得以前找到过方法,而且可用,忘记了,重新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,结果依然如此。 找到原来的写法了,很简单:order by rand() limit 10,,如果数据大可以用id in (select [...]

2010年6月21日14:21 | 1 条评论
标签: ,