LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

Sql Server,A表的a字段更新到B表的a字段,基础知识点,一分钟拿下

freeflydom
2026年7月3日 15:39 本文热度 72

在 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;

注意事项

  1. 确保有 WHERE 条件或正确的 JOIN:避免全表更新
  2. 先备份或测试:使用 BEGIN TRANSACTIONROLLBACK 验证
  3. 注意数据类型:A.a 和 B.a 的数据类型必须兼容
  4. 考虑 NULL 值:如果 A.a 为 NULL,B.a 也会被更新为 NULL
-- 安全测试示例
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进行查询看下是否正确,毕竟在生产环境一键覆盖了,
如果更新的字段多,且有覆盖的情况,最好做一次数据库表备份。

转自​https://blog.csdn.net/lmy_520/article/details/160294800


该文章在 2026/7/3 15:40:08 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-9  粤公网安备44030602007207号