使用内部联接更新表变量

时间:2014-04-07 12:56:18

标签: sql-server

我有一个名为@ MatchTemp的表变量。我使用select语句编写了一个插入查询,如下所示

Insert into @MatchTemp(StoreName,CompanyCode,StoreCode,Address,CityState)

Select s.StoreName,co.CompanyCode,s.StoreCode,s.BuildingName as Address,s.City+','+st.StateName as CityState 
from Cashsafes c
inner join Stores s on s.StoreId=c.StoreId
inner join Company co on co.CompanyId=c.CompanyId
inner join State st on st.StateId=s.StateId
and c.CashsafeId=@cashsafeid.

如何编写更新查询而不是如上所示的Insert?我被困在这里

Update @MatchTemp set StoreName=s.StoreName,CompanyCode=co.CompanyCode,.. 
from Cashsafes c

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

更好的是使用临时表(使用#作为作用域或##作为全局)而不是临时变量作为临时变量将在主存储器(RAM)中创建,而临时表将在辅助存储器(DISK)中创建。但是,如果需要,您可以在更新查询的语法中附加最后一个condion。

UPDATE @Table1 SET t1.name = t2.name
FROM Table2 t2
INNER JOIN @Table1 t1 ON t1.id = t2.id