1

我有这样的数据库表结构:

编号 | currency_list_id | 方向标识 | 价值 | 更新时间

我有这样的数据:

1 | 1 | 1 | 8150 | 09-08-2010 01:00:00
1 | 1 | 2 | 8250 | 09-08-2010 01:00:00
1 | 2 | 1 | 8150 | 06-08-2010 01:00:00
1 | 2 | 2 | 8150 | 06-08-2010 01:00:00
1 | 1 | 1 | 8150 | 09-08-2010 15:00:00
1 | 1 | 2 | 8250 | 09-08-2010 15:00:00

所以交换器中的货币几乎每天都设置,并且一天可以设置不止一次..但也可以在几天前设置一个......而且我必须获取所有实际数据..

在rails(ruby)中我如何只能获取最后的实际数据?

在我的示例中,结果将是:

1 | 2 | 1 | 8150 | 06-08-2010 01:00:00
1 | 2 | 2 | 8150 | 06-08-2010 01:00:00
1 | 1 | 1 | 8150 | 09-08-2010 15:00:00
1 | 1 | 2 | 8250 | 09-08-2010 15:00:00

这个怎么做?

我这样尝试:

@currencies = CurrencyValue.find(:all, :conditions => {:currency_list_id => id}, :order => :updated_at)

但是然后我将通过排序获取一些currency_list_id 的所有数据,但是如何仅获取最后两个值?如何获取最后 2 个有序行?

4

2 回答 2

1
@currencies = CurrencyValue.find(:all, :conditions => {:currency_list_id => id, :order => :updated_at}).last(2)

我认为 :)。现在无法检查这个。

于 2013-04-12T21:27:26.470 回答
0

我认为你需要的是一个GROUP_BY. 这里还有另一个问题可以解释:

如何使用 GROUP BY 获取每个组的最新记录?

于 2013-04-13T10:58:02.390 回答