比如,数据库中现在有 50 条数据,第 1 次从数据库中随机 5 条,第 2 次从剩下的 45 条中再随机取出 5 条,第 3 次从 40 条中随机取 5 条,依次类推。这样的功能能实现吗?
可以先全部取出来,之后用数组的 sample 方法选 5 个,之后从数组中删掉刚才取出的 5 个,以此类推,这样要查询全部结果最好将结果 Cache 到内存。
这是先全查出来再用 Ruby 处理的方法,没什么效率,可以的话最好在向数据库查询时来处理,不过我不是很清楚具体的 SQL 语句怎么写。
受教了,非常感谢!!!
取出来再 suffle
Array.delete! 方法好像是返回删掉的那个吧。
#3 楼 @hooopo 这个有效率,赞~