データベース スキーマを変更し、結合テーブル 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があいまいで、ある種のselect firstまたはminなどが必要なためだと思います。
**明確にするために、データにはまだ1対1の関係があると確信していますが、既存のテーブルから元のテーブルにデータを戻すためのSQLを理解できません。私が探しているのは、accounts_users からデータを取得し、user_id を account テーブルに入れる実用的な SQL です。ありがとう、ジョエル