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.