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

更新表中的数据,在线等
数据库中A表(ax,bx,cx,dx,ex)
外部数据源是从xml生成的临时表B(ax,bx,cx,dx)

要求:
如果B中的数据A中存在,就把A表中的ax,bx,cx,dx列更新为B表中的内容,ex列保持原来的值
如果B中的数据A中不存在,就像A表中添加B表的内容,ex列设为空值,
如果A中的数据B中不存在,在A中删除这条数据

当前能想到的就是使用游标,有没有比游标更好的解决方案!

------解决方案--------------------
引用:
数据库中A表(ax,bx,cx,dx,ex)
外部数据源是从xml生成的临时表B(ax,bx,cx,dx)

要求:
如果B中的数据A中存在,就把A表中的ax,bx,cx,dx列更新为B表中的内容,ex列保持原来的值
如果B中的数据A中不存在,就像A表中添加B表的内容,ex列设为空值,
如果A中的数据B中不存在,在A中删除这条数据

当前能想到的就是使用游标,有没有比游标更好的解决方案!




红色是1需求,蓝色2需求,绿色3需求,每一步单个执行都没问题。
如果按照顺序执行,就是A全部删除,保留B,更新B中跟A不同的部分。
lz是这样吗》?
------解决方案--------------------
如果你是MSSQL08及以上版本,建议你使用merge语句。具体看参考MSDN。如果不是,那么就要根据三种情况分别写三套代码来实现了。
------解决方案--------------------
不需要游标。4楼正解了,使用update语句update ..set...from...join...on...where...已经可以解决问题了。。。