gpt4 book ai didi

sql - 将数据移动到另一个表

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:26 25 4
gpt4 key购买 nike

我有一个关于将数据从一个表移动到另一个表的问题。我正在使用 Postgres 作为数据库。我有两个模型:

class User < ActiveRecord::Base
has_many :emails
end


class Email < ActiveRecord::Base
belongs_to :user
end

架构看起来像这样:

  create_table "users", force: :cascade do |t|
t.string "first_name", limit: 255
t.string "last_name", limit: 255
t.string "email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

create_table "emails", force: :cascade do |t|
t.string "email", null: false
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

现在我想为用户移动最新的电子邮件并将其保存在用户表电子邮件列中。我可以在迁移中使用 Rails 模型轻松地做到这一点,但是当我重命名模型或删除它时。迁移将失败。有什么简单的方法可以用原始 sql 来完成吗?

最佳答案

您可以使用 window functions .下面的示例是一个起点。

UPDATE users u
SET u.email = (SELECT
MAX(FIRST_VALUE(email)) OVER (PARTITION BY user_id ORDER BY created_at DESC)
FROM emails e
WHERE e.user_id = u.id);

关于sql - 将数据移动到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31653252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com