Ruby on rails 如何使用单列更新复制多行
我想通过单列更新复制表中的所有行 例如 表County有1000行,我想用单列更新复制所有行Ruby on rails 如何使用单列更新复制多行,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想通过单列更新复制表中的所有行 例如 表County有1000行,我想用单列更新复制所有行 做这件事的正确方法是什么?假设我对你的理解正确,我会这样做 INSERT INTO NewTable (Col1, Col2, Col3) SELECT Col1, Col2, UpdateFunction(Col3) FROM County 其中Col3是要更新的列,UpdateFunction是要用于更新该列的函数 编辑:当然这是SQL,不是Rails-我没有仔细查看问题的标记:-)描述了如何使用
做这件事的正确方法是什么?假设我对你的理解正确,我会这样做
INSERT INTO NewTable (Col1, Col2, Col3)
SELECT Col1, Col2, UpdateFunction(Col3)
FROM County
其中Col3是要更新的列,UpdateFunction是要用于更新该列的函数
编辑:当然这是SQL,不是Rails-我没有仔细查看问题的标记:-)描述了如何使用clone
复制记录
假设1000条记录已经在一个名为countries
的可枚举列表中,我们最终得到
counties.each { |county|
county_copy = county.clone
county_copy.col3 = update_function(county_copy.col3)
county_copy.save
}
@krunalshah您可以构建一个哈希数组并将该数组传递给
Country.create(array)
,但它将执行多个insert查询
其他选项使用
connection.execute(<<-SQL)
insert into country1 (col1, col2)
select col1, col2 from countries
SQL
connection.execute(我想用rails way做同样的事情。我已经在我的代码中应用了这个方法。但是用这个代码它将创建1000个查询。我们不能用一个查询插入所有记录吗?不是本机的。如果这是一次性的,我建议使用我在下面发布的SQL。如果这是你需要定期做的事情,你可能需要重新考虑你的数据结构。但是我确实看到了这篇博客文章,它可能提供了一些提示:@krunalshah你可以构建一个哈希数组,并将该数组传递给Country.create(array)