赞
踩
merge into t1 using t2 on t1.yhangh=t2.yhangh
when matched then update set t1.ygongh_now=t2.ygongh,t1.bilifc_now=t2.bilifc
when not matched then insert (yhangh,ygongh_now,bilifc_now) values(t2.yhangh,t2.ygongh,t2.bilifc)
merge into 的用法:如上例子,表示的是表t1和表t2的字段关联,若关联上则将表t1中的两个字段替换为表t2中查询出来的值,若关联不上,则插入一条数据
实际上应用(曾用到的一个例子)
平时我们用到的关联,可以将两个表通过某个字段关联,即得到新的有关所需要的信息,但表中关联的字段必须唯一,否则会产生笛卡尔积,若需要将两个表通过字段不唯一关联,而又避免笛卡尔积,此时可以使用merge into
若源表t1中有yhangh、ygongh、bilifc
t2中有yhangh、ygongh、bilifc
两个表中yhangh可以相互关联,ygongh和bilifc字段不一致
需要展示成yhangh、ygongh_pre、bilifc_pre、ygongh_now、bilifc_now的样式,若没有的字段显示为空
建立新表a,表中包含所需要的字段
先将表t1中的字段插入表a,ygongh、bilifc对应为ygongh_pre、bilifc_pre
然后使用上述merge into 用法,已经存在yhangh的将ygongh_now,bilifc_now为空的替换为表t2的值
不存在yhangh的插入字段yhangh、ygongh_now、bilifc_now,当人ygongh_pre,bilifc_pre没有值即为空
当然给表t1,t2通过使用row_number() over(partition by bilifc order by yhang desc)各生成组内连续且唯一数字num1,num2,然后根据yhangh,num去full join内关联,也是可以避免笛卡尔积达到上述效果的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。