sql >> Database teknologi >  >> RDS >> Mysql

Opdatering af en tabel fra en anden tabel med flere kolonner i sqlalchemy

Det tror jeg ikke, du kan. Dette er således ikke rigtig et svar, men det er alt for langt til en kommentar.

Du kan nemt sammensætte din forespørgsel med 2 kolonner (det vidste du vist allerede):

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

og bagefter kan du bruge metoden with_only_columns() , se 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)

Men som du kan se fra opdateringserklæringen, vil du effektivt foretage to valg. (Beklager, jeg tilpassede ikke output fuldstændigt til dit eksempel, men jeg er sikker på, at du forstår ideen).

Jeg er ikke sikker på, om, som du siger, MySQL vil være smart nok til kun at gøre det til én forespørgsel. Det tror jeg nok. Håber det hjælper alligevel.




  1. MySQL-fejl:mysql_fetch_assoc() forventer, at parameter 1 er ressource

  2. Nogen måde at forbinde disse to forespørgsler uden underforespørgsel?

  3. Vis brugernavn på indekssiden

  4. docker.io - Docker-link mellem applikations- og databasecontainere