更正此查询的sql(arel)?

时间:2013-08-06 16:02:24

标签: sql ruby-on-rails arel

我有两个表,一个用users,另一个用profiles。每个表都有一个created_at列,我想要更新profiles.created_at,以便它与user_id中的相应行(由users.created_at确定)相同。

在Rails中,我可能会这样做:

Profile.update_all(created_at: {???})

尝试创建一个有效的查询,因为这是在超过一百万行上执行的。

1 个答案:

答案 0 :(得分:1)

update  profiles p 
set     p.created_at = (select  u.created_at 
                        from    users u 
                        where   u.user_id = p.user_id 
                        and     u.created_at <> p.created_at
                        )