读书人

Merge into 应用详解(2)

发布时间: 2012-07-26 12:01:08 作者: rapoo

Merge into 使用详解(2)

自从版本9i之后,对于“有则更新,无则插入”有了一个新的用法,不需要再执行2次SQL了。

MERGE INTO本来应该是用来合并表的,不过因为其特性,根据用途不同可以用在以下场合:

1.合并表
2.外部数据插入更新
3.用JOIN表更新

各种情况下的
1.合并表
把表格T2的数据合并到表格T1里,根据结合条件,如果存在则更新,不存在则插入

?Merge into 应用详解(2)Merge into 应用详解(2)
    MERGE INTO T1USING T1 ON( T1.user_id = T2.user_id)WHEN MATCHED THEN UPDATE SET T1.user_nm = T2.user_nmWHEN NOT MATCHED THEN INSERT (user_id,user_nm) VALUES (T2.user_id,T2.user_nm)


    2.外部数据插入更新
    根据外部传进来的参数,如果存在的话,用给定的参数更新,如果不存在则插入

    ?Merge into 应用详解(2)Merge into 应用详解(2)
      MERGE INTO T1USER DUAL ON( T1.user_id = '001')WHEN MATCHED THEN UPDATE SET T1.user_nm = 'David Vi'WHEN NOT MATCHED THEN INSERT (user_id, user_nm) VALUES ('001','David Vi')


      3.用JOIN表更新
      这个其实和第一个应用差不多,就是USING内部是个多个表进行结合的子表,根据多个表的结合查询然后对对象表进行更新。

      对于第1,3应用有个问题,就是更新对象表和USING表(子表)是1:N的关系的话,无法更新。
      另外,对于第3个应用,不如用VIEW更新来的快。

读书人网 >其他数据库

热点推荐