使用匹配的用户名在 SQL 表之间高效传输数据
您的数据库包含两个表,table_a
和 table_b
,每个表都有一个 user_name
列。 目标是将数据从 column_b_1
中的 column_b_2
和 table_b
分别复制到 column_a_1
中的 column_a_2
和 table_a
,根据相同的 user_name
值匹配行。
假设适当的索引已就位以获得最佳性能,单个 SQL 语句即可完成此操作:
<code class="language-sql">UPDATE table_a SET column_a_1 = (SELECT b.column_b_1 FROM table_b b WHERE b.user_name = table_a.user_name), column_a_2 = (SELECT b.column_b_2 FROM table_b b WHERE b.user_name = table_a.user_name) WHERE EXISTS (SELECT 1 FROM table_b b WHERE b.user_name = table_a.user_name);</code>
此查询使用相关子查询从 table_b
中为 table_a
中的每一行获取正确的值。 EXISTS
子查询确保仅对两个表中都存在的用户名进行更新。
对于性能至关重要的大型数据集,请考虑以下替代策略:
JOIN
构建临时表来组合 table_a
和 table_b
中的相关行。table_a
中删除现有数据。table_a
。虽然此方法涉及更多步骤,但它通常可以通过广泛的数据集提供卓越的性能。
以上是如何根据匹配的用户名在SQL表之间高效复制数据?的详细内容。更多信息请关注PHP中文网其他相关文章!