PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Conversion d'une relation plusieurs-à-plusieurs en un-à-plusieurs dans PostgreSQL

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

Si vous devez avoir plusieurs lignes pour un bar (ce que vous ne devriez pas, selon votre description) la ligne sera mise à jour plusieurs fois et le résultat est arbitraire.

Cette forme de requête est généralement plus performante qu'une sous-requête corrélée.

Notez que la clé primaire de bar devrait vraiment être nommé bar_id - J'utilise ce nom dans la requête.