MSSQL批量更新多表间关联数据(mssql更新关联表)
MSSQL批量更新多表间关联数据
MSSQL在开发过程中常常有需求来更新多表间关联数据,本文将介绍一种比较常采用的方案来实现MSSQL数据库中多表间批量数据更新操作。
首先我们将创建一组用于存放数据的表,比如:
~~~sql
create table Table_A(
ID int,
Name varchar(20),
Country varchar(20),
CreateTime datetime
)
create table Table_B(
ID int,
Score int,
Name varchar(20),
Country varchar(20)
)
~~~
这两张表中共同有`Name`,`Country`字段,说明存在数据相关性,我们现在要完成的操作是更新`Table_B`的`Score`字段,根据`Table_A`的`CreateTime`字段。
这里我们通过MSSQL`UPDATE`语句来实现:
~~~sql
update Table_B
set Score=t.Score
from Table_B b
inner join (select sum(Score) as Score,Name,Country from Table_A
group by Name,Country,CreateTime) as t
on b.Name = t.Name and b.Country=t.Country
~~~
这条语句利用内连接,将`Table_B`与`Table_A`关联,`Table_A`中`Score`字段按`Name`,`Country`字段Group by 进行合计,最后更新`Table_B`中的`Score`字段。经过这条语句后,`Table_B`的中`Score`字段将已经更新完毕。
上述的例子中,我们使用的是内连接的方式,只关联了`Table_B`与`Table_A`,实际应用中,如果有多表存在关联,也可以采用类似的思路进行操作。
总的来说,MSSQL的更新操作很方便,如果批量更新多表间关联数据,我们可以采用上文提到的SELECT-UPDATE-JOIN语句进行按需处理。