oracle MERGE INTO...USING两表关联操作(效率高),mergeinto...using
数据量小的时候可以使用子查询做两表关联操作;但数据量大的时候子查询效率太低(因为是单条比对)
比如:
update person1 p1 set p1.p_name=(select p_name from person2 where p1.p_id=p2.p_id) where p1.add_date>to_date('2014-09-01','yyyy-mm-dd')而使用MERGE INTO...USING 作两表关联操作(增、删、改)就效率非常高
MERGE INTO person1 p1
USING (select p_id,p_name from person2 where use='952701' ) p2
ON ( p1.p_id=p2.p_id )
WHEN MATCHED THEN UPDATE SET p1.p_name = p2.p_name where p1.add_date>to_date('2014-09-01','yyyy-mm-dd')
commit;
(a.z = b.z)的个数不唯一,那你要取哪个?
给你个取最大的:
update a set a.x =
(select max(b.x) from b where a.z = b.z )
where y=3
;
两表数据多,只能通过在两表z字段建索引来加快速度。
在when matched then 和 when not matched then 后面只能加insert() values 或者 update set ....,.... ,不能附加条件,而且then 后面的语句不能使用其他语句。 另外注意到,B的域只在using里面的查询有用吧 ,如果你要使用 也得是 在Using () M 用m吧
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。