Frage

Wir änderten Datenbankschema und bewegt, um eine Beziehung zwischen den Nutzern / Konten von einer 1-1 auf eine viele zu viele Join accounts_users Tabelle.

So haben wir Konten, Benutzer, accounts_users (user_id und account_id)

Unsere Daten sind noch 1-1, und wir haben beschlossen, wieder zu bewegen. Also brauche ich sql zurück zu bewegen:

Um Migrate ich verwendet:

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

zurück zu bewegen Ich habe versucht:

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

Alle diese geben ein SQL-Fehler von einer Art. Im erraten sein, weil meine SQL ist nicht eindeutig, und ich brauche eine Art von Auswahl ersten oder min oder so ähnlich.

** Um es klar, ich bin sicher, noch hat die 1-1-Beziehung in den Daten, aber ich kann die SQL zu bringen, die Daten aus den vorhandenen Tabellen wieder in die ursprünglichen Tabellen herauszufinden. Was im suchen ist einige Arbeits SQL, die die Daten von accounts_users nehmen und die user_id auf das Konto Tisch. Danke, Joel

War es hilfreich?

Lösung

Sie könnten versuchen, ...

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

Das wird ganz schön langweilig, wenn Sie eine Menge von Spalten in accounts_users haben, die in accounts zurück zu gehen haben, aber, und nicht, wenn es irgendwelche Probleme mit dem ids ist (daher meine vorherige Antwort). Wie viele Spalten gibt es?

Andere Tipps

Wenn Sie Ihre Zuordnung ist 1-1 dann nur das erste Ergebnis aus (Sie wissen, dass es nur eine)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top