在sql开发中, 我们经常会建很多的表, 在表中做关联, 对数据进行关联的查询,修改等。
在今天的工作中, 遇到了一个问题, 我们在进行数据库批量处理, 在批量处理中, 发现了一部分问题,是将一个表中的部分字段内容, 批量修改到另一个表中的对应字段中, 而两个表则是根据一个相同的字段进行关联
如下面的实例:
Table_A表数据如下:
备注: ID为用户id, Name为用户名称, Score为总成绩
Table_B表数据如下:
备注: 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表中
以上代码执行后, 数据如下:
通过上面的实例,可以清晰的看到, 将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
|