Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Aktualizacja tabeli z innej tabeli z wieloma kolumnami w sqlalchemy

Nie sądzę, że możesz. Tak więc nie jest to tak naprawdę odpowiedź, ale jest zbyt długa na komentarz.

Możesz łatwo skomponować zapytanie z 2 kolumnami (chyba już o tym wiedziałeś):

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

a potem możesz użyć metody with_only_columns() , zobacz 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 widać w oświadczeniu o aktualizacji, skutecznie dokonasz dwóch wyborów. (Przepraszam, że nie dostosowałem danych wyjściowych całkowicie do twojego przykładu, ale jestem pewien, że masz pomysł).

Nie jestem pewien, czy, jak mówisz, MySQL będzie na tyle sprytny, że zrobi to tylko jedno zapytanie. Chyba tak. Mam nadzieję, że to i tak pomoże.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql pobierz nazwy kolumn tabeli w kolejności alfabetycznej

  2. Pobieranie tylko ustalonej liczby wierszy w MySQL

  3. Jak uzyskać kolumny niegrupowane według instrukcji SQL (podobnie jak w MySQL)

  4. MySQL usuwa zduplikowane wiersze

  5. XML lub tabela bazy danych do przechowywania ustawień