LightDB中的MERGE语句使用介绍

MERGE语句

MERGE语句可以从一个或多个源表中选择记录,对目标表进行数据的插入或更新。将源表中的数据分别与目标表中的数据根据指定条件进行比较,如果匹配,则利用源表中的记录更新目标表中的记录,如果不匹配,则将源表中的记录插入目标表中。

使用MERGE语句操作时,可以将UPDATE、INSERT、DELETE操作融为一体,用户需要具有源表的SELECT对象操作权限以及目标表的INSERT、UPDATE对象权限。

MERGE语句在OLAP系统中应用比较广,在AP系统中,经常需要同时读取多个数据源,而其中的很多数据是重复的,所以可以使用MERGE语句有条件地进行积累的添加或修改。

示例

我们举个例子说明MERGE的用法:

-- 创建源表
create table tsrc(a int, b int);
insert into tsrc values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
-- 创建目标表
create table tdst(a int, b int);
insert into tdst values (2,0),(4,0),(7,0);

-- 执行MERGE操作
merge into tdst d  -- 目标表
using tsrc s       -- 源表
on (d.a = s.a)     -- ON 决定MERGE语句执行更新操作还是插入操作的条件
when matched then   -- 匹配则执行更新
	update set b = s.b
when not matched then   -- 不匹配则执行插入
	insert (a,b) values(s.a,s.b);

-- 查询执行结果
postgres@postgres=# select * from tdst ;
 a | b 
---+---
 7 | 0
 1 | 1
 2 | 2
 3 | 3
 4 | 4
 5 | 5
 6 | 6
(7 rows)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值