临时表与实体表的操作(存在主键则更新,不存在则新增)
TbCard 表结构如下,CardCode和CardNum为主键。
CardCode varchar(10) not null default '',
CardNum varchar(10) not null default '',
OtherInfo1 varchar(10) not null default '',
OtherInfo2 varchar(10) not null default '',
同时,我建一个相同结构的临时表#Temp_TbCard
我要实现这样的功能,把临时表中的数据保存到TbCard中,如果临时表中的CardCode和CardNum在tbCard中存在,则更新 OtherInfo1和 OtherInfo2.
否则如果临时表中的CardCode和 CardNum在tbCard中不存在,则插入该行数据到TbCard。
[解决办法]
update TbCard
set OtherInfo1=t.CardCode ,OtherInfo2=t.CardNum
from TbCard inner join #Temp_TbCard t on TbCard.CardCode=t.CardCode
and TbCard.CardNum=t.CardNum
insert into TbCard
select *
from #Temp_TbCard a
where not exists (select 1 from TbCard b where a.CardCode=b.CardCode and a.CardNum=b.CardNum)