gpt4 book ai didi

mysql - 将多对多转换为一对一(mysql)

转载 作者:行者123 更新时间:2023-11-29 03:14:13 26 4
gpt4 key购买 nike

我们更改了数据库架构,并使用连接表 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 放入帐户表中。谢谢,乔尔

最佳答案

你可以试试...

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

不过,如果您在 accounts_users 中有很多列必须返回到 accounts 中,那将变得非常乏味,如果有的话将无法工作ID 有任何问题(因此我之前的回答)。有多少列?

关于mysql - 将多对多转换为一对一(mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493138/

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