我们更改了数据库架构,并使用Join Table Accounder_users将用户/帐户之间的关系从1-1转移到许多人。

因此,我们有帐户,用户,帐户_users(user_id and account_id)

我们的数据仍然是1-1,我们决定返回。因此,我需要SQL返回:

要迁移我使用:

INSERT INTO accounts_users (account_id,user_id) SELECT id AS account_id, user_id AS user_id FROM accounts

回去我尝试过:

UPDATE 
    accounts
SET
    user_id = ru.user_id
FROM 
    accounts r, accounts_users ru
ON 
    r.id = ru.account_id


Update accounts
Set r.user_id = ru.user_id
FROM accounts r, accounts_users ru
WHERE r.id = ru.account_id


SELECT accounts_users.user_id
   INTO accounts
   FROM accounts_users
   INNER JOIN accounts
   ON accounts.id = accounts_users.account_id

所有这些都给出了某种SQL错误。我猜到它是因为我的SQL模棱两可,我需要某种选择的先到单位或类似的东西。

**清楚,我肯定在数据中仍然有1-1关系,但是我无法找出SQL将现有表中的数据带回原始表中。我正在寻找的是一些工作的SQL,它将从Accounts_users获取数据并将User_id放入帐户表中。谢谢,乔尔

有帮助吗?

解决方案

你可以尝试...

UPDATE accounts
    SET user_id = (SELECT user_id
                       FROM accounts_users
                       WHERE accounts_users.accounts_id = accounts.accounts_id);

如果您有很多专栏,那将变得非常乏味 accounts_users 必须回去 accounts, 但是,如果IDS存在任何问题(因此我以前的答案),并且不会工作。有多少列?

其他提示

如果您的映射为1-1,则只选择第一个结果(您知道只有一个)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top