查询以将数据从表中的一个列值移动到另一个

时间:2018-09-04 19:55:09

标签: ruby-on-rails postgresql import

我有一个parents表,其中有family_situations和admin_notes字段。上传CSV时,由于错误,我在family_situations列中上传了所有admin_notes数据。有什么办法可以将family_situations中的所有数据移至admin_notes。请帮忙。

parent.rb

def self.import(file)
            CSV.foreach(file.path, headers:true) do |row|
                parent = Parent.find_or_update_or_create_by(
                    parent_1_firstname: row['parent_1_firstname'],
                    parent_1_lastname: row['parent_1_lastname'],
                    family_situation: row['family_situation'],
                                    )
    end

模式

create_table "parents", force: :cascade do |t|
    t.string "parent_1_firstname"
    t.string "parent_1_lastname"
    t.text "family_situation"
    t.string "admin_notes"
end

当我在Rails控制台中尝试以下代码时,它会引发错误的未定义方法SET

UPDATE Parent SET admin_notes=family_situation

2 个答案:

答案 0 :(得分:0)

 UPDATE new_table SET columnA = (SELECT columnB FROM old_table
 WHERE old_table.key_column = new_table.key_column);

如果您需要基于另一个表中的值更新一个表中的列,那么您将需要找出哪个列将行从一个表映射到另一个表。在下面的示例中,我将此列称为key_column。 UPDATE命令如下所示:

 UPDATE new_table SET columnA = (SELECT columnB FROM old_table
 WHERE old_table.key_column = new_table.key_column);

没有参考键,或者条件以这种方式使用

 UPDATE new_table SET columnA = (SELECT columnB FROM old_table
 WHERE old_table.autoserial < highest number on new table i.e : 100000);

答案 1 :(得分:0)

Parent.update_all"admin_notes=family_situation"