【发布时间】:2017-09-07 06:23:43
【问题描述】:
我有以下合并查询,我想更新日期和性能问题,我使用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';
【问题讨论】:
-
我很好奇为什么您的更新与 where 子句中的日期不同。 “更新到 01.01.2017,除非日期是 01.01.2016”。
标签: oracle merge insert sql-update rowid