问题:是否存在一职对应多植的状况,比如同样是B1,B2两个值,但是在B表,却有两个3,4,5字段
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、网站空间、营销软件、网站建设、舒城网站维护、网站推广。
比如:
B1 B2 B3 B4 B5
1 1 1 1 1
1 1 2 1 1
如果存在这种情况那么是没办法修改的,因为不知道怎么对应。也就是说如果B表的关于B1,B2的count大于1,那么A表是没办法修改的。
如果确定记数都是等于1的,那么好象就简单了,
update A set a.a3=b.b3,a.a4=b.b4,a.a5=b.b5 from a,b where a.a1=b.ba and a.a2=b.b2
如果不行,那么就用
update A set a.a3=(select b3 from b where a.a1=b.b1 and a.a2=b.b2),后面继续写4和5。
如果还不行就用merge,这个就是慢了一些,不过应该是可以的,我曾经用他一次改过很多字段,不过因为merge有insert的动作,所以你先试验下上面的语句把。
--因为没有给出a、b两个表的关联,所以用a.id和b.aid做了关联
update
a
aa
set
status=30
where
(select
count(status)
from
b
where
a.id=b.aid)0
--确定b表有A表子数据
and
(select
count(status)
from
b
where
a.id=b.aid
and
b.status30)=0--b表子数据status30个数=0个,说明子数据status全部为30
1、oracle自然连接中不需要指定连接条件,它会自动匹配两张表中相同的列。
2、在自然连接中可以指定需要显示的列。
3、在使用自然连接的时候不能为要指定显示的列指定表名或者是表别名。
4、在使用自然连接的时候,如果两张有两个字段相同那同样也会自动匹配。
5、natural join连接与where条件连接的查询方式虽然不一样,但查询结果是一样的。
merge into A
using B
on (A.dm=b.dm)
when matched then
update set a.dmmc=b.dmmc
;
用oracle当然用oracle特有的函数效率高,merge专用
不用这么复杂
C表根据身份证号直接关联到A表,查询出所有的a000,然后直接根据这个去update B表中的数据