日期:2014-05-17  浏览次数:20429 次

在sql server 2008中一个不知道能不能实现的sql,请指点

需求是这样的:需要保存一批数据,保存之前要对每条记录判断表中是否已存在,如果存在则更新,如果不存在则执行insert


一条SQL能解决么?貌似在db2中用过,忘记怎么写了
------最佳解决方案--------------------

if exists(select 1 from tableB where id =1)
begin
update TableB set ** where id =x
end
else
begin
insert into TableB values ('')
end


------其他解决方案--------------------
Merge
------其他解决方案--------------------
if else
------其他解决方案--------------------
--假设你保存后的表为A,要处理的表为B

UPDATE B
SET b.xx=a.xx ,.....这里把你要更新的列写上
FROM B INNER JOIN A ON B.主键=A.主键

INSERT INTO B
SELECT *
FROM A
WHERE NOT EXISTS (SELECT 1 FROM B WHERE B.主键=A.主键)