Ruby on rails 删除重复记录保留最后一个usign ActiveRecord

Ruby on rails 删除重复记录保留最后一个usign ActiveRecord,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我一直试图删除重复的记录(列shopify\u order\u id中的相同值),保留最新的记录 我用sql写的: select orders.id from ( select shopify_order_id, min(shopify_created_at) as min_created from orders group by shopify_order_id having count(*) > 1 limit 5000 ) as keep_orders join orde

我一直试图删除重复的记录(列
shopify\u order\u id
中的相同值),保留最新的记录

我用sql写的:

select orders.id from (
  select shopify_order_id, min(shopify_created_at) as min_created 
  from orders group by shopify_order_id having count(*) > 1 limit 5000
) as keep_orders 
join orders 
on 
  keep_orders.shopify_order_id = orders.shopify_order_id and 
  orders.shopify_created_at <> keep_orders.min_created
但是,以下方法不起作用:

Order.select('orders.id').from(keep_orders, :keep_orders).
joins('orders ON keep_orders.shopify_order_id = orders.shopify_order_id').
where.not('orders.shopify_created_at = keep_orders.min_created')
它构建查询:

SELECT  orders.id FROM  (SELECT  shopify_order_id, MIN(shopify_created_at) as min_created FROM "orders" GROUP BY "orders"."shopify_order_id" HAVING (count(*) > 1) LIMIT $1) keep_orders  orders ON keep_orders.shopify_order_id = orders.shopify_order_id WHERE NOT (orders.shopify_created_at = keep_orders.min_created) ORDER BY "orders"."id" ASC LIMIT $2  [["LIMIT", 5000], ["LIMIT", 1]]
缺少关键字
join


任何关于如何重构查询/以另一种方式执行查询的帮助都将不胜感激

如果使用调用
连接
,则需要指定所需的连接类型:

Order.select('orders.id')。from(keep_orders,:keep_orders)
.joins('JOIN orders ON keep\u orders.shopify\u order\u id=orders.shopify\u order\u id')
.where.not('orders.shopify_created_at=keep_orders.min_created'))
SELECT  orders.id FROM  (SELECT  shopify_order_id, MIN(shopify_created_at) as min_created FROM "orders" GROUP BY "orders"."shopify_order_id" HAVING (count(*) > 1) LIMIT $1) keep_orders  orders ON keep_orders.shopify_order_id = orders.shopify_order_id WHERE NOT (orders.shopify_created_at = keep_orders.min_created) ORDER BY "orders"."id" ASC LIMIT $2  [["LIMIT", 5000], ["LIMIT", 1]]