苏飞论坛

标题: sql server批量将一个表中的部分字段内容更新到另一个表的对应字段中 [打印本页]

作者: 范范    时间: 2018-11-30 17:13
标题: sql server批量将一个表中的部分字段内容更新到另一个表的对应字段中
在sql开发中, 我们经常会建很多的表, 在表中做关联, 对数据进行关联的查询,修改等。

在今天的工作中, 遇到了一个问题, 我们在进行数据库批量处理, 在批量处理中, 发现了一部分问题,是将一个表中的部分字段内容, 批量修改到另一个表中的对应字段中, 而两个表则是根据一个相同的字段进行关联

如下面的实例:
Table_A表数据如下:
[attach]7566[/attach]

备注: ID为用户id, Name为用户名称, Score为总成绩

Table_B表数据如下:
[attach]7567[/attach]

备注: UserID为用户id, Score为单科成绩, ScoreType为科目分类(如: 1语文, 2数学, 3英语)

此时, 我需要将用户的总成绩, 放入Table_A的Score中, 此时就需要用到下面的方式, 即: 批量更新A表中的Score, 根据B表中的用户id进行匹配, 将所有成绩综合,更新赋值给A中的Score
[SQL] 纯文本查看 复制代码
UPDATE dbo.Table_A 
SET Score = tableC.TotalScore
FROM ( SELECT UserId, SUM(Score) AS TotalScore FROM dbo.Table_B GROUP BY UserId ) AS tableC
JOIN Table_A ON Table_A.ID = tableC.UserId


上面的语句就是我处理后的语句, 将B表中的成绩根据用户ID进行批量处理, 组成临时表C, 将C中的TotalScore更新到A表中

以上代码执行后, 数据如下:
[attach]7568[/attach]

通过上面的实例,可以清晰的看到, 将B中的总成绩, 已经批量更新到A中了

简单的说就是如下的sql语句实现:
[SQL] 纯文本查看 复制代码
        UPDATE dbo.Table_A 
SET Score = Table_C
FROM Table_C
JOIN Table_A ON Table_A.ID = Table_C.UserId



作者: liu    时间: 2018-11-30 17:25
感恩无私的分享与奉献
作者: Amy    时间: 2018-11-30 17:25
楼主加油,我们都看好你哦。
作者: 站长苏飞    时间: 2018-11-30 17:34
都 是经验之谈
作者: 惜    时间: 2018-11-30 17:35
强烈支持楼主ing……
作者: 竹林风    时间: 2018-11-30 18:05
感恩无私的分享与奉献




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4