日期:2014-05-18  浏览次数:20554 次

我碰到一个奇怪的问题,自己写的怎么老是不行呢?出怪了
我有一表a001(a0011,a0022)
另一表a003   (a0031,a0032)

现在a001表是原始导入数据,a003表是保留数据
我想把a001表数据导入到a003表里,那么如果a003表里的a0031和a0011表里的值如有
相同的,则更新,没有则插入a001表的信息,,大家看看这个怎么写?

原来写的(不能用,不知为啥,连续执行的话,会重复插入)
insert   into   a003   (a0031,a0032)   select   a0011,a0022   from   a001   t,a003     k
where   t.a0011 <> k.a0031


------解决方案--------------------
--先更新
Update A Set a0032 = B.a0022 From a003 A Inner Join a001 B On A.a0031 = B.a0011

--再插入
insert into a003 (a0031,a0032) select a0011,a0022 from a001
where Not Exists(Select a0031 from a003 Where a003 = a001.a0011)
------解决方案--------------------
錯了,改下

--先更新
Update A Set a0032 = B.a0022 From a003 A Inner Join a001 B On A.a0031 = B.a0011

--再插入
insert into a003 (a0031,a0032) select a0011,a0022 from a001 A
where Not Exists(Select a0031 from a003 Where a0031 = A.a0011)