sql >> Databáze >  >> RDS >> Mysql

Aktualizace tabulky z jiné tabulky s více sloupci v sqlalchemy

Myslím, že nemůžete. Toto tedy ve skutečnosti není odpověď, ale na komentář je to příliš dlouhé.

Dotaz můžete snadno sestavit se 2 sloupci (myslím, že jste to již věděli):

select_query = select([table2.c.col1, table2.c.col2]).where(table1.c.key == table2.c.key)

a poté můžete použít metodu with_only_columns() , viz api :

In[52]: print(table.update().values(col1 = select_query.with_only_columns([table2.c.col1]), col2 = select_query.with_only_columns([table2.c.col2])))
UPDATE table SET a=(SELECT tweet.id 
FROM tweet 
WHERE tweet.id IS NOT NULL), b=(SELECT tweet.user_id 
FROM tweet 
WHERE tweet.id IS NOT NULL)

Ale jak vidíte z prohlášení o aktualizaci, budete efektivně vybírat dva. (Omlouvám se, že jsem výstup zcela nepřizpůsobil vašemu příkladu, ale jsem si jistý, že tomu rozumíte).

Nejsem si jistý, zda, jak říkáte, MySQL bude dost chytrý na to, aby to byl pouze jeden dotaz. Myslím že ano. Doufám, že to každopádně pomůže.




  1. Je možné migrovat z Realmu do Sqlite?

  2. Jak zobrazit tělo uložené funkce PL/SQL v Oracle

  3. Převod Oracle join na Ansi join

  4. Potlačí Postgres klauzuli WHERE do VIEW s funkcí okna (agregace)?