临时表与实体表的操作(存在主键则更新,不存在则新增)TbCard 表结构如下,CardCode和CardNum为主键。 CardCod
临时表与实体表的操作(存在主键则更新,不存在则新增)
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)
[解决办法]
如果是SQL SERVER 2008或者之上的版本可以用merge实现。
如果是之前版本可能要写两条语句,INNER JOIN的UPDATE, LEFT JOIN没有数据的INSERT
[解决办法]
oracle 写法,参考:
http://www.cnblogs.com/highriver/archive/2011/08/02/2125043.html
