根据匹配的用户名更新表中的行值
问:更新表值
在 SQL 数据库中,您有两个表,table_a 和 table_b,它们都有一个名为 user_name 的公共列。您希望根据匹配的 user_name 值,将 table_b 中的特定列(名为 column_b_1 和 column_b_2)复制到 table_a 中的相应列(column_a_1 和 column_a_2)。如何使用 SQL 语句实现此目标?
答:解决方案
如果已就位适当的索引,您可以使用以下 UPDATE 语句:
<code class="language-sql">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 );</code>
注意:此 UPDATE 语句使用子查询从 table_b 中检索与 table_a 中具有匹配 user_name 的每一行相对应的列值。
如果性能令人担忧,请考虑使用 SELECT 和 JOIN 操作构建临时表以存储修改后的行。随后,您可以从 table_a 中删除现有数据,并从临时表中重新填充它。
以上是如何根据匹配的用户名更新 SQL 表行?的详细内容。更多信息请关注PHP中文网其他相关文章!