我们更改了数据库架构,并使用连接表accounts_users将用户/帐户之间的关系从1-1移动到多对多。
所以我们有 账户, 用户, accounts_users(user_id和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放入帐户表。谢谢,乔尔
答案 0 :(得分:1)
你可以试试......
UPDATE accounts
SET user_id = (SELECT user_id
FROM accounts_users
WHERE accounts_users.accounts_id = accounts.accounts_id);
如果accounts_users
中有很多列必须返回accounts
,那将会变得非常繁琐,但如果有任何问题,它们将无效(因此我以前的答案)。有多少列?
答案 1 :(得分:0)
如果你的映射是1-1,那么只需选择第一个结果(你知道只有一个)