Rails使用最新更新获取行



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

id|currency_list_id|direction_id|value|updated_at

我有这样的数据:

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个排序行?

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

我认为:(。现在无法检查。

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

如何使用group BY获取每组中的最新记录?

最新更新