sql >> Databáze >  >> RDS >> PostgreSQL

Převod vztahu many-to-many na one-to-many v PostgreSQL

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

Pokud byste měli mít více řádků pro jeden bar (což byste podle vašeho popisu neměli) jeden řádek bude aktualizován několikrát a výsledek je libovolný.

Tato forma dotazu obecně funguje lépe než korelovaný poddotaz.

Všimněte si, že primární klíč bar by se měl skutečně jmenovat bar_id - Toto jméno používám v dotazu.



  1. Vyhodnocení násobků výrazů 'IN' v klauzulích 'WHERE' v mysql

  2. Jak nakonfigurovat mezipaměť PreparedStatement s Postgres a Tomcat7 JDBC Pool?

  3. Jak vytvořit protokol chyb nebo vlastní protokol chyb v rámci balíčku SSIS?

  4. Vyberte největší číslo z tabulky MYSQL s přidanou předponou