代码之家  ›  专栏  ›  技术社区  ›  Andrew

使用更新合并插入新行

  •  0
  • Andrew  · 技术社区  · 8 年前

    我有下面的合并查询,我想更新的日期和我使用的性能问题 ROWID 思维方式

    但我想知道它是否会插入新行?我只想更新表格 TEST_GRP

    因为我正在使用 逻辑第一次我真的不确定它是插入新行还是只更新表。

    MERGE INTO TEST_GRP tgt
      USING (SELECT ID,
                    ROWID r_id,
                    row_number() over (partition by ID ORDER BY DT_DATE) rn
             FROM   TEST_GRP) src
        ON (tgt.rowid = src.r_id AND src.rn = 1)
    WHEN MATCHED THEN
      UPDATE SET DT_DATE = to_date('01.01.2017', ''dd.mm.yyyy'')
      WHERE DT_DATE != to_date('01.01.2016', ''dd.mm.yyyy'')
      and DB_NAME = 'ARD';
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   Magor_k    8 年前

    它将毫无问题地更新行,并且不会插入新行。

        2
  •  1
  •   Ori Marko    8 年前

    您不必将insert子句添加到 merge docs :

    merge\u update\u子句。。。您可以自行指定该子句,也可以使用

    并且您的代码中没有插入代码,因此不会发生插入。

    merge\u insert\u子句:

    推荐文章