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

一个sql连表更新的问题
现在我有表 ke11 和ke12 可以通过aaz278来进行关联,这个字段在两个表中的值是唯一的(没有建立唯一性约束,也不是主键,且两张表都没有主键) 现在有字段 ake001 ke11和ke12都有,但是有些数据对应不上,现在想把 ke12中的ake001 更新到ke11中,在网上找的一些语句测试都没用。 新人求帮助 
------最佳解决方案--------------------
merge into ke11 k1
using ke12 k2
on (k1.aaz278 = k2.aaz278)
when matched then
  update set k1 = ake001 = k2.ake001;
--aaz278建主键或唯一索引,可以加快更新速度

------其他解决方案--------------------
merge 就是 带条件的 update 或  insert 操作

大致语法是这样的。。 



merge into a  -- 目标表,,你要update或insert的那张表
using b 
on a.id = b.id  -- 符合的条件
when matched then   -- 查找到符合条件的数据时更新 
   update set ...
when not matched then --没有查找到是insert 
  insert .....values ...


------其他解决方案--------------------
引用:
SQL code
?



123456

merge into ke11 k1 using ke12 k2 on (k1.aaz278 = k2.aaz278) when matched then  update set k1 = ake001 = k2.ake001; --aaz278建主键或唯一索引,可以加快更新速度


我这里提示无法在源数据获得稳定行。 (执行4秒之后出现这种问题,是因为我的数据可能有重复的问题吗?)
另外还有个不情之请,能不能再写几个其它的例子 merge 今天还是第一次见。
------其他解决方案--------------------
你一开始不是说数据唯一么。。。不唯一的话你怎么更新,两条不同数据更新同一条数据?
------其他解决方案--------------------
用merge



merge into ke11 a 
using  ke12 b 
on a.aaz278 = b.aaz278
when matched then 
  update set a.ake001  = b.ake001


  
------其他解决方案--------------------
艾。。。。。手慢。。。
------其他解决方案--------------------
引用:
你一开始不是说数据唯一么。。。不唯一的话你怎么更新,两条不同数据更新同一条数据?


我也是几天才刚接触这个,我也不能百分之一百说数据是唯一,理论上应该是唯一的,但是可能的问题就是测试库去从正式库拷数据,或者做假数据的时候不小心出问题了。
我想问的是,为什么会出现我上面出的那个错误?
------其他解决方案--------------------
引用:
用merge



SQL code
?



12345678

merge into ke11 a  using  ke12 b  on a.aaz278 = b.aaz278 when matched then   update set a.ake001  = b.ake001


写几个别的例子,也让我开开眼啊。
------其他解决方案--------------------
无法获取稳定的数据。。。。那你用存储过程把,,,查找匹配数据然后循环update..