【问题标题】:Understanding random ordering in Rails + postgresql了解 Rails + postgresql 中的随机排序
【发布时间】:2014-05-13 14:42:57
【问题描述】:

所以,我想在显示数据时做一些随机排序,此时我的代码是:

Timsheet.limit(1).offset(RANDOM(Timesheet.count)).first

我知道 postgresql 的 (RANDOM) 语法不同于 MYSQL 的 (RAND()) 和 Oracles (dbms_random.value) 语法。

我只是想确认我的代码是正确的,据我了解,它正在抓取第一行,并以随机顺序偏移数据?

请帮忙解决一下,谢谢!

【问题讨论】:

  • 我想你想要Timsheet.order('RANDOM()').first:这将产生一个随机顺序并选择第一条记录:很好你会得到一个随机记录。 --- 使用你的代码(带偏移量)总是在我的 IRB 控制台中返回相同的记录
  • 您应该能够在您的日志中看到从您的 ruby​​ 代码生成的 sql:这始终是一个很好的健全性检查。看着它,我会说它会从表中抓取一个随机的时间表记录。
  • 其实可能不是。看到这个问题:stackoverflow.com/questions/5297396/…

标签: sql ruby-on-rails ruby-on-rails-3 postgresql ruby-on-rails-4


【解决方案1】:

我认为以下内容适用于所有 DBMS

Timsheet.offset(Random.new.rand(Timsheet.count)).first

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2012-12-04
    • 2018-11-05
    • 2020-12-03
    • 2014-04-06
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多