PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Conversione di una relazione molti-a-molti in uno-a-molti in PostgreSQL

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

Se dovessi avere più righe per una bar (cosa che non dovresti, secondo la tua descrizione) l'unica riga verrà aggiornata più volte e il risultato è arbitrario.

Questa forma della query generalmente ha prestazioni migliori rispetto a una sottoquery correlata.

Nota che la chiave primaria di bar dovrebbe davvero essere chiamato bar_id - Uso quel nome nella query.