PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Convertendo um relacionamento muitos para muitos em um para muitos no PostgreSQL

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.