2014-04-07 93 views
0

我有一个名为@ MatchTemp.I表变量已经写了使用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 [email protected] 

我怎么能写出更新查询,而不是插入如上图所示?我卡在这里

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

任何帮助将不胜感激。

+0

根本不能有一个名为'@ MatchTemp'的表。临时表的名称以'#'或'##'开头。只有表值参数或变量可以用'@'定义。在任何情况下,只要变量/参数在范围 –

+0

@PanagiotisKanavos中,'Update'语句应该与其他任何更新语句相同,实际上您可以拥有这样的表,但是您是正确的,它们不会被称为临时表但表变量' – DrCopyPaste

+0

@DrCopyPaste这些都不是表格,它们是变量。有一个巨大的差异 –

回答

0

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

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