PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Konvertieren einer Viele-zu-Viele-Beziehung in Eine-zu-Viele-Beziehung in PostgreSQL

UPDATE bar b
SET    foo_id = fb.foo_id
FROM   foo_bar fb
WHERE  fb.bar_id = b.bar_id;

Wenn Sie mehrere Zeilen für einen bar haben sollten (was Sie laut Ihrer Beschreibung nicht tun sollten) Die eine Zeile wird mehrmals aktualisiert und das Ergebnis ist willkürlich.

Diese Form der Abfrage ist im Allgemeinen leistungsfähiger als eine korrelierte Unterabfrage.

Beachten Sie, dass der Primärschlüssel bar ist sollte eigentlich bar_id heißen - Ich verwende diesen Namen in der Abfrage.