0

假设我有一个这样的表(PriceHistory),每次更改行中的任何内容时,我都会在表中再次记录行。

id | buy_price | sell_price | change_date
 1 |         2 |          2 | 2012-06-22
 2 |         3 |          2 | 2012-06-20
 3 |         2 |          6 | 2012-06-15
 4 |         5 |          5 | 2012-06-15
 5 |         5 |          7 | 2012-06-15
 6 |         4 |          8 | 2012-06-12

我只关心 的变化BuyPrice,有没有办法只选择第 1、2、3 和 5 行?

这是我想出的 Ruby 代码,但它不仅选择更改的行

PriceHistory.select("id, BuyPrice, change_date").
order("change_date DESC")

Ruby 和 SQL 的答案都很好。

4

1 回答 1

0

尝试这个:

@histories = PriceHistory.select("id, BuyPrice, change_date").order("change_date DESC")

(@histories.size - 1).times do |n|
  if @histories[n].buy_price != @histories[n+1].buy_price
    puts "changed from : " + @histories[n].id.to_s + " to: " + @histories[n+1].id.to_s
  end
end

祝你好运!

于 2012-06-23T04:21:31.220 回答