新手问题 这样的功能如何实现?

tomwey · 2012年07月29日 · 最后由 xiongxoy 回复于 2012年07月30日 · 2803 次阅读

比如,数据库中现在有 50 条数据,第 1 次从数据库中随机 5 条,第 2 次从剩下的 45 条中再随机取出 5 条,第 3 次从 40 条中随机取 5 条,依次类推。这样的功能能实现吗?

可以先全部取出来,之后用数组的 sample 方法选 5 个,之后从数组中删掉刚才取出的 5 个,以此类推,这样要查询全部结果最好将结果 Cache 到内存。

这是先全查出来再用 Ruby 处理的方法,没什么效率,可以的话最好在向数据库查询时来处理,不过我不是很清楚具体的 SQL 语句怎么写。

受教了,非常感谢!!!

取出来再 suffle

Array.delete! 方法好像是返回删掉的那个吧。

#3 楼 @hooopo 这个有效率,赞~

需要 登录 后方可回复, 如果你还没有账号请 注册新账号