MERGE语句
来源:互联网 发布:游戏程序员的职业诉求 编辑:程序博客网 时间:2024/06/07 01:15
SQL Server 2008 开始支持 MERGE语句
-- 源表
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 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)
-- 源表有,目标表没有,插入
WHEN
NOT
MATCHED
BY
SOURCE
THEN
DELETE
;
-- 目标表有,源表没有,目标表该数据删除.
-- 第一次检查 目标表数据.
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 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)
-- 源表有,目标表没有,插入
WHEN
NOT
MATCHED
BY
SOURCE
THEN
DELETE
;
-- 目标表有,源表没有,目标表该数据删除.
-- 再次检查 目标表数据.
SELECT
*
FROM
test_to;
id val
----------- --------------------
1 A2
3 C
0 0
- MERGE语句
- MERGE语句
- merge语句
- MERGE语句的使用!
- MERGE 语句示例说明
- Oracle应用MERGE语句
- Merge语句的应用
- Merge 语句的使用
- oracle merge语句
- Oralce MERGE语句
- Oracle-merge语句学习
- Oracle 融合语句Merge
- Oracle MERGE语句
- MERGE语句的使用
- [Oracle] Merge语句
- [Oracle] Merge语句
- merge into 语句用法
- Oracle merge 语句
- 【数据结构篇】三大排序图解
- 操作数类型冲突: date 与 int 不兼容
- 时序图学习(一)
- eclipse的tomcat的work目录位置
- 由Git的SSH公钥到非对称加密
- MERGE语句
- 时序图学习(二)
- 专注于书箱的网站
- 【LeetCode with Python】 Reorder List
- 点击按钮,实现用户签到
- rails4 部署到heroku 全
- SDL2垂直同步
- Linux 下的cat命令用法
- 对于内存越界访问的笔记