sql >> Base de Datos >  >> RDS >> PostgreSQL

Convertir una relación de muchos a muchos en uno a muchos en PostgreSQL

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

Si debe tener varias filas para una bar (que no debería, según su descripción) la fila se actualizará varias veces y el resultado es arbitrario.

Esta forma de consulta generalmente funciona mejor que una subconsulta correlacionada.

Tenga en cuenta que la clave principal de bar realmente debería llamarse bar_id - Uso ese nombre en la consulta.