欢迎投稿

今日深度:

oracle MERGE INTO...USING两表关联操作(效率高),mer

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;




[oracle]两表关联的update操作问题

(a.z = b.z)的个数不唯一,那你要取哪个?
给你个取最大的:
update a set a.x =
(select max(b.x) from b where a.z = b.z )
where y=3
;
两表数据多,只能通过在两表z字段建索引来加快速度。
 

ORACLE对于merge into用法

在when matched then 和 when not matched then 后面只能加insert() values 或者 update set ....,.... ,不能附加条件,而且then 后面的语句不能使用其他语句。 另外注意到,B的域只在using里面的查询有用吧 ,如果你要使用 也得是 在Using () M 用m吧
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2976.html NewsArticle oracle MERGE INTO...USING两表关联操作(效率高),mergeinto...using 数据量小的时候可以使用子查询做两表关联操作;但数据量大的时候子查询效率太低(因为是单条比对) 比如: update person1 p1 se...
评论暂时关闭