Solange Sie geeignete Indizes haben, sollte dies in Ordnung sein:
UPDATE table_a
SET
column_a_1 = (SELECT table_b.column_b_1
FROM table_b
WHERE table_b.user_name = table_a.user_name )
, column_a_2 = (SELECT table_b.column_b_2
FROM table_b
WHERE table_b.user_name = table_a.user_name )
WHERE
EXISTS (
SELECT *
FROM table_b
WHERE table_b.user_name = table_a.user_name
)
UPDATE in sqlite3 unterstützt keine FROM-Klausel, wodurch dies etwas mehr Arbeit als in anderen RDBMS macht.
Wenn die Leistung nicht zufriedenstellend ist, besteht eine andere Möglichkeit darin, neue Zeilen für table_a mithilfe einer Auswahl zu erstellen und mit table_a eine temporäre Tabelle zu erstellen. Löschen Sie dann die Daten aus table_a und füllen Sie sie aus dem temporären neu aus.
column_a_1 = (SELECT table_b.column_b_1 FROM table_b WHERE table_b.user_name = table_a.user_name )