oracle 如何根据一个表中记录的变动更新另外一个表中相应的字段
a表(id,name,telephone,zipcode,address),b表(id,name,telephone,zipcode,address,dept,money...
a表(id,name,telephone,zipcode,address),b表(id,name,telephone,zipcode,address,dept,money) a表中ID与b表中ID是对应的,B表中的name,address....会变动;这时就需要让A表与B表的数据保持一致,只修改变动的记录,不用全表替换,不需要实时变动。
我的意思是B表中的name,address会变动,但是不是所有的都会变动,所以先要查询出变动的部分,然后再和A表比较,再把A表的name,address也更新。备注:不要把没有变动的也更新一遍,这样会影响性能。 是不是要写存储过程才可以实现? 展开
我的意思是B表中的name,address会变动,但是不是所有的都会变动,所以先要查询出变动的部分,然后再和A表比较,再把A表的name,address也更新。备注:不要把没有变动的也更新一遍,这样会影响性能。 是不是要写存储过程才可以实现? 展开
展开全部
需要实时变动用触发器
不实时变动用update
update a set a.name=(select b.name from b where a.id=b.id),a.adress=(select b.address from b where a.id=b.id)
------补充------
update a set a.name=(select b.name from b where a.id=b.id),a.adress=(select b.address from b where a.id=b.id) where a.name<>b.name or a.address<>b.address
不实时变动用update
update a set a.name=(select b.name from b where a.id=b.id),a.adress=(select b.address from b where a.id=b.id)
------补充------
update a set a.name=(select b.name from b where a.id=b.id),a.adress=(select b.address from b where a.id=b.id) where a.name<>b.name or a.address<>b.address
推荐于2017-09-19 · 知道合伙人软件行家
Axure夜话
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:1197
获赞数:1344
1992年毕业于太原理工大学,20年IT公司工作经验现任山西誉海和科技有限公司技术总监,老二牛车教育课程总监
向TA提问 私信TA
关注
展开全部
oracle 如何根据一个表中记录的变动更新另外一个表中相应的字段
可以采取两种方式来实现: 子查询和视图的方式
1:子查询方式
参考代码
update stumarks
set stuname=
(
select stuinfo.stuname from stuname
where stumarks.stuno=stuinfo.stuno
)
2:视图方式
参考代码
update(
select a.stuname anme,b.stuname bname from stuinfo a
inner join stumarks b
ona.stuno=b.stuno
)
set bname=aname
可以采取两种方式来实现: 子查询和视图的方式
1:子查询方式
参考代码
update stumarks
set stuname=
(
select stuinfo.stuname from stuname
where stumarks.stuno=stuinfo.stuno
)
2:视图方式
参考代码
update(
select a.stuname anme,b.stuname bname from stuinfo a
inner join stumarks b
ona.stuno=b.stuno
)
set bname=aname
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询