UPDATE bar b
SET foo_id = fb.foo_id
FROM foo_bar fb
WHERE fb.bar_id = b.bar_id;
Se você deve ter várias linhas para uma
bar
(o que você não deveria, de acordo com sua descrição) a linha será atualizada várias vezes e o resultado é arbitrário. Essa forma de consulta geralmente tem um desempenho melhor do que uma subconsulta correlacionada.
Observe que a chave primária de
bar
deve realmente ser nomeado bar_id
- Eu uso esse nome na consulta.