将许多转换为一对一(MySQL)
-
28-09-2019 - |
题
我们更改了数据库架构,并使用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,则只选择第一个结果(您知道只有一个)
不隶属于 StackOverflow