【发布时间】:2021-12-22 05:38:36
【问题描述】:
我有两张表,分别称为 daily 和 master。每日表每天都会被截断,但主表保存数据并且永远不会被截断。每天我都会运行一个 SQL 脚本来将 Daily 表数据与 Master 表合并,如下所示:
UPDATE master
SET offset = COALESCE(offset + 1, 0);
MERGE INTO master m
USING daily d
ON (m.id = d.id)
WHEN MATCHED THEN
UPDATE SET offset = 0
WHEN NOT MATCHED THEN
INSERT (id, col1, col2, col3, offset)
VALUES (d.id, d.col1, d.col2, d.col3, NULL);
这很好用,但在 WHEN NOT MATCHED 子句中,我只需要从 Daily 到 Master 插入最多 100 条记录。不,要插入的数据没有排序标准。我怎样才能做到这一点?
【问题讨论】:
-
我会把它从
MERGE中分离出来,分成单独的UPDATE和INSERT语句。到那时就变得微不足道了。 -
插入(或任意)的数据是否有排序标准,DB的版本是多少?
-
@EricBrandt:请您帮忙看看单独的 UPDATE 和 INSERT 语句是什么样的?
-
@BarbarosÖzhan:不,没有排序标准。 Oracle 版本为 12.x
标签: sql oracle oracle12c sql-merge