一尘不染

使用相同的用户名更新另一个表中的表值

sql

我有两个表,一个名为同一列中user_name,他说table_atable_b

我想,从复制table_bcolumn_b_1column_b2,以table_b1column_a_1column_a_2,分别,这里的user_name是一样的,如何做到这一点的SQL语句?


阅读 139

收藏
2021-05-05

共1个答案

一尘不染

只要您有合适的索引,它就可以正常工作:

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
    )

sqlite3中的UPDATE不支持FROM子句,这使它比其他RDBMS的工作量更多。

如果性能不令人满意,则另一个选择可能是使用select为table_a建立新行,并与table_a联接到临时表中。然后从table_a中删除数据,并从临时表中重新填充。

2021-05-05