从Rails范围获取第二行

时间:2014-09-12 14:37:45

标签: mysql ruby-on-rails ruby

  second = Trade.with_currency(currency).h24.order('id desc').limit(1).offset(1).try(:price)
  first = Trade.with_currency(currency).h24.order('id desc').first.try(:price)

我想得到第一排和第二排的价格。第一个是工作,但我有问题得到第二行。通过上述查询,我​​得到了回复。

当我直接在mysql中查询第二行时,它正在工作:

SELECT `trades`.* FROM `trades` WHERE `trades`.`currency` = 5 AND (created_at > '2014-01-11 16:20:06') ORDER BY id desc LIMIT 1 OFFSET 1;

3 个答案:

答案 0 :(得分:0)

offset(1)在语句

中添加first

它会像

  second = Trade.with_currency(currency).h24.order('id desc').limit(1).offset(1).first.try(:price)

答案 1 :(得分:0)

      prev = Trade.with_currency(currency).order('id desc').limit(1).offset(1).first.try(:price)

这是解决方案 - 我添加了选择第一个偏移1的结果。

答案 2 :(得分:0)

如果您只需要值:

Trade.with_currency(currency).h24.order('id desc').pluck(:price).first(2)

pluck方法仅提取值,first(2)用于提取前两个值。