Ruby on rails Activerecord获取多个最新记录
我有以下简化表格:Ruby on rails Activerecord获取多个最新记录,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有以下简化表格: | id | order_id | created_at | | 1 | 1 | 2011-07-11 | | 2 | 1 | 2011-07-12 | | 3 | 2 | 2011-07-13 | | 4 | 2 | 2011-07-14 | 现在,我正在尝试获取订单列表的所有记录,但仅获取每个订单id的最新记录 EdpuOrder.find(:all, :conditions =>
| id | order_id | created_at |
| 1 | 1 | 2011-07-11 |
| 2 | 1 | 2011-07-12 |
| 3 | 2 | 2011-07-13 |
| 4 | 2 | 2011-07-14 |
现在,我正在尝试获取订单列表的所有记录,但仅获取每个订单id的最新记录
EdpuOrder.find(:all, :conditions => "edpu_orders.order_id IN (#{ids})", :order => "edpu_orders.created_at")
ids变量是由一个子查询生成的,现在假设它是“1,2”。上述语句应返回记录2和4。有什么想法吗?找到一种将ID放入数组的方法
ids = [1, 2]
EdpuOrder.where(:order_id => ids).order(:created_at)
顺便说一句,这只适用于Rails 3及以上版本。尝试此范围(我用正确的表名替换您的表):
现在YourModel.top_orders
应该做这件事了我在使用Ruby/Rails,更新了标签列表…它返回了哪些元素?上面的语句给了我列表中的所有记录看看这个答案,看看它是否有用:这会给我所有四条记录,按日期排序,而我只需要记录2和4。。。
EdpuOrder.where("(edpu_orders.order_id, edpu_orders.id) IN
(SELECT order_id, MAX(id) FROM edpu_orders GROUP BY order_id)").
order("created_at DESC")
EdpuOrder.where("(edpu_orders.order_id, edpu_orders.id) IN
(SELECT order_id, MAX(id) FROM edpu_orders GROUP BY order_id)").
order("created_at DESC")