Postgresql Rails:在特定范围内选择随机记录?

3

我在控制器中有以下代码来选择随机照片:

@photo1 = @contest.photos.limit(1).order("RANDOM()")

我希望选择另一张随机照片作为@photo2,但它的得分属性必须与@photo1的得分相差+/- 400。我该怎么做?
可选:我更希望@photo2的得分在+/- 200以内,如果没有符合条件的,则搜索+/- 400。
1个回答

3
您可以使用范围和where语句来生成BETWEEN语句。
Photo.where(score: ((@photo1.score-200)..(@photo1.score+200)))
     .order("RANDOM()").take

或许你可以尝试使用 sample 方法: Photo.where(score: ((@photo1.score-200)..(@photo1.score+200))).sample - ShallmentMo
从数据库中提取所有记录以提取单个记录非常低效@ShallmentMo。如果有几千条记录,它肯定会死锁您的服务器。 - max

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接