sql >> Database >  >> RDS >> Mysql

Een tabel bijwerken vanuit een andere tabel met meerdere kolommen in sqlalchemy

Ik denk niet dat je dat kunt. Dit is dus niet echt een antwoord, maar het is veel te lang voor een commentaar.

U kunt eenvoudig uw zoekopdracht samenstellen met 2 kolommen (ik neem aan dat u dat al wist):

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

en daarna kun je de methode with_only_columns() . gebruiken , zie 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)

Maar zoals je kunt zien aan de update-instructie, doe je effectief twee selecties. (Sorry dat ik de uitvoer niet volledig aan uw voorbeeld heb aangepast, maar ik weet zeker dat u het idee begrijpt).

Ik weet niet zeker of, zoals je zegt, MySQL zal slim genoeg zijn om er slechts één zoekopdracht van te maken. Ik denk het wel. Ik hoop dat het hoe dan ook helpt.




  1. Hoe een standalone Moodle te migreren naar een schaalbare configuratie van een geclusterde database

  2. Wat betekent M,D in decimaal (M,D) precies?

  3. PostgreSQL FOUT:INSERT heeft meer doelkolommen dan expressies, als dat niet het geval is

  4. MySQL:records ingevoegd per uur, voor de afgelopen 24 uur