我有以下合并查询,我想更新日期和性能问题,我正在使用ROWID
逻辑。
但我想知道无论如何插入新行?我只是想更新表TEST_GRP
并且不想要任何新行的插入。
由于我第一次使用ROWID
逻辑,我真的不确定它是插入新行还是仅更新表。
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';
答案 0 :(得分:2)
它会毫无问题地更新行,也不会插入新行。
在UPDATE statment probalie中,它可能会导致格式掩码SET DT_DATE = to_date(' 01.01.2017',' dd.mm.yyyy' ')DT_DATE!= to_date(' 01.01.2016','' dd.mm.yyyy'')
答案 1 :(得分:1)
您不必按docs中所述的merge
语句添加insert子句:
merge_update_clause ...您可以单独指定此子句,也可以使用 merge_insert_clause
你没有密码,所以不会插入插件。
merge_insert_clause: