SQL中 merge语句 没有where子句吗,Oricle都有
答案:1 悬赏:0 手机版
解决时间 2021-04-06 16:50
- 提问者网友:温柔港
- 2021-04-06 01:02
SQL中 merge语句 没有where子句吗,Oricle都有
最佳答案
- 五星知识达人网友:风格不统一
- 2021-04-06 02:39
Oracle MERGE 例子
Oracle 9i 开始支持 MERGE语句
Oracle的MERGE 相对于SQL Server 2008 的 MERGE。
功能上,缺少一个 WHEN NOT MATCHED BY SOURCE 的情况。
-- 源表
CREATE TABLE test_from (id INT, val VARCHAr(20));
-- 目标表
CREATE TABLE test_to (id INT, val VARCHAr(20));
-- 插入源表
INSERT INTO test_from VALUES (1, 'A');
INSERT INTO test_from VALUES (2, 'B');
-- 合并 源表到目标表
MERGE INTO test_to
USING test_from
ON ( test_to.id = test_from.id ) -- 条件是 id 相同
WHEN MATCHED THEN UPDATe SET test_to.val = test_from.val -- 匹配的时候,更新
WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) -- 源表有,目标表没有,插入
-- 第一次检查 目标表数据.
SQL> SELECt * FROM test_to;
ID VAL
---------- --------------------
1 A
2 B
-- 更新源表
UPDATe test_from SET val = 'A2' WHERe id = 1;
-- 删除源表
DELETe FROM test_from WHERe id = 2;
-- 插入源表
INSERT INTO test_from VALUES (3, 'C');
-- 合并 源表到目标表
MERGE INTO test_to
USING test_from
ON ( test_to.id = test_from.id ) -- 条件是 id 相同
WHEN MATCHED THEN UPDATe SET test_to.val = test_from.val -- 匹配的时候,更新
WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) -- 源表有,目标表没有,插入
-- 再次检查 目标表数据.
SQL> SELECt * FROM test_to;
ID VAL
---------- --------------------
1 A2
2 B
3 C
Oracle 9i 开始支持 MERGE语句
Oracle的MERGE 相对于SQL Server 2008 的 MERGE。
功能上,缺少一个 WHEN NOT MATCHED BY SOURCE 的情况。
-- 源表
CREATE TABLE test_from (id INT, val VARCHAr(20));
-- 目标表
CREATE TABLE test_to (id INT, val VARCHAr(20));
-- 插入源表
INSERT INTO test_from VALUES (1, 'A');
INSERT INTO test_from VALUES (2, 'B');
-- 合并 源表到目标表
MERGE INTO test_to
USING test_from
ON ( test_to.id = test_from.id ) -- 条件是 id 相同
WHEN MATCHED THEN UPDATe SET test_to.val = test_from.val -- 匹配的时候,更新
WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) -- 源表有,目标表没有,插入
-- 第一次检查 目标表数据.
SQL> SELECt * FROM test_to;
ID VAL
---------- --------------------
1 A
2 B
-- 更新源表
UPDATe test_from SET val = 'A2' WHERe id = 1;
-- 删除源表
DELETe FROM test_from WHERe id = 2;
-- 插入源表
INSERT INTO test_from VALUES (3, 'C');
-- 合并 源表到目标表
MERGE INTO test_to
USING test_from
ON ( test_to.id = test_from.id ) -- 条件是 id 相同
WHEN MATCHED THEN UPDATe SET test_to.val = test_from.val -- 匹配的时候,更新
WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) -- 源表有,目标表没有,插入
-- 再次检查 目标表数据.
SQL> SELECt * FROM test_to;
ID VAL
---------- --------------------
1 A2
2 B
3 C
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯