sql server 有insertorupdate 语句吗,能自动识别是插入还是更新的,谢谢各位大神
补充:就是一条语句,它会自动识别记录,新的就插入,原有的就update,有这种语句吗,???
追问:是的,我也用的这个,问一下,我建了个sp,schema是dbo,功能是从一个表A向另一个表B load数据,用这个dbo做schema的话,表A为空的时候,不会到执行到 When Not Matched By Target Then Insert, 就是不会插入,然后我重建sp,换了个adm的schema之后就正常了,请问这种情况是怎么回事啊
答案:如果是MSSQL2008则参考下Merge
Merge Into Demo_AllProducts p
using Demo_Shop1_Product s on p.DCode=s.DCode
--如果编码相同,则更新目标表的名称
When Matched and P.DName<>s.DName ThenUpdateset P.DName=s.DName
--如果目标表中不存在,则从数据源插入目标表
WhenNot Matched By Target ThenInsert (DName,DCode,DDate) values (s.DName,s.DCode,s.DDate)
--如果数据源的行在源表中不存在,则删除源表行
WhenNot Matched By Source ThenDelete;
其他:SQL没有这样的语句,但是你可以写一个存储过程
---1 查询原先没有的插入
---2 更新有的
不过这样速度太慢了,如果数据量大的话,最好是删除原有记录后,直接插入! 没有这样的语句,大型系统中常用的就是删后再插,我以前做过的几套业务系统都是这么干的,但是要注意数据正确性:) 新旧记录判断的依据是什么?
上一个:sql server 2000怎么导出数据啊说下步骤(说详细点谢谢)
下一个:sql server高手看哪里错了,我是建立标量值函数