🌹欢迎来到《小5讲堂》🌹 🌹这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹 👨💻 作者简介
🏆 荣誉头衔:2024博客之星Top14 | CSDN博客专家 | 阿里云专家博主
🎤 经历:曾多次进行线下演讲,亦是 CSDN内容合伙人 以及 新星优秀导师
💡 信念:“帮助别人,成长自己!”
🚀 技术领域:深耕全栈,精通 .NET Core (C#)、Python、Java,熟悉主流数据库
🤝 欢迎交流:无论是基础概念还是进阶实战,都欢迎与我探讨!

目录
- ✨前言
- 标准写法(使用 JOIN)
- 具体示例
- 其他常用场景
-
- 1. 使用 LEFT JOIN(只更新匹配的行,不匹配的保持原值)
- 2. 使用子查询
- 3. 更新为 A 表的聚合值
- 注意事项
- 实例
- 文章推荐
✨前言
不知道大家有没有这样的感受,每隔一段时间,有些sql写法大概记得,但是真正手写的时候还是有点无从下手,哈哈哈。 我知道可以写sql语句批量更新某个表字段给两外一个表字段,少用就很快生疏了,但是我们对基本的概念和用法还是记得的,所以现在的AI工具很大程度帮我们记住这些写法,有好处也有坏处吧。 趁这次机会,又重新回顾下sql一些基础用法,Let’s Go
在 SQL Server 中,将 A 表的 a 字段更新到 B 表的 a 字段,常见写法取决于两表之间的关联条件。
标准写法(使用 JOIN)
UPDATE B
SET B.a = A.a
FROM B
INNER JOIN A ON B.关联字段 = A.关联字段
具体示例
假设 A 表(源表)和 B 表(目标表)通过 id 字段关联:
— 创建示例表
CREATE TABLE A (id INT, a VARCHAR(50));
CREATE TABLE B (id INT, a VARCHAR(50));
— 插入数据
INSERT INTO A VALUES (1, 'value1'), (2, 'value2');
INSERT INTO B VALUES (1, 'old1'), (2, 'old2'), (3, 'old3');
— 更新 B.a = A.a
UPDATE B
SET B.a = A.a
FROM B
INNER JOIN A ON B.id = A.id;
其他常用场景
1. 使用 LEFT JOIN(只更新匹配的行,不匹配的保持原值)
UPDATE B
SET B.a = A.a
FROM B
LEFT JOIN A ON B.id = A.id;
2. 使用子查询
UPDATE B
SET B.a = (SELECT A.a FROM A WHERE A.id = B.id)
WHERE EXISTS (SELECT 1 FROM A WHERE A.id = B.id);
3. 更新为 A 表的聚合值
UPDATE B
SET B.a = A.sum_value
FROM B
INNER JOIN (
SELECT id, SUM(a) AS sum_value
FROM A
GROUP BY id
) A ON B.id = A.id;
注意事项
— 安全测试示例
BEGIN TRANSACTION
UPDATE B
SET B.a = A.a
FROM B
INNER JOIN A ON B.id = A.id;
— 检查结果
SELECT * FROM B;
— 确认无误后提交,否则回滚
— COMMIT
— ROLLBACK
实例
在update更新前,可以使用select进行查询看下是否正确,毕竟在生产环境一键覆盖了, 如果更新的字段多,且有覆盖的情况,最好做一次数据库表备份。

文章推荐
【数据库】Sql Server,A表的a字段更新到B表的a字段,基础知识点,一分钟拿下
【数据库】Sql Server数据库中isnull、iif、case when三种方式的使用和空值判断
【数据库】如何使用一款轻量级数据库SqlSugar进行批量更新,以及查看最终的Sql操作语句
【数据库】使用Sql Server将分组后指定字段的行数据转为一个字段显示,并且以逗号隔开每个值,收藏不迷路
【数据库】SQL Server 查询条件小技巧:ISNULL 函数的使用,有请DeepSeek来辅助讲解下
【Sql Server】在SQL Server中生成雪花ID(Snowflake ID)
【Sql Server】使用row_number over方式进行表分页,数据量达到五千多条记录后,查询变慢需要20多秒的解决方案
【Sql Server】随机查询一条表记录,并重重温回顾下自定义函数的封装和使用
【Sql Server】锁表如何解锁,模拟会话事务方式锁定一个表然后进行解锁
【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理
【新星计划回顾】第六篇学习计划-通过自定义函数和存储过程模拟MD5数据
【新星计划回顾】第四篇学习计划-自定义函数、存储过程、随机值知识点
【Sql Server】Update中的From语句,以及常见更新操作方式
【Sql server】假设有三个字段a,b,c 以a和b分组,如何查询a和b唯一,但是c不同的记录
【Sql Server】新手一分钟看懂在已有表基础上修改字段默认值和数据类型
总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

