Oracle 的merge into 语法转postgre
2024-10-21 10:12:52
Oracle的merge into 语法
MERGE INTO t1
USING (SELECT id,name FROM t2) t2
ON ( t1.id=t2.id) //主键
WHEN MATCHED THEN //匹配则更新
UPDATE SET T1.name= t2.name
WHEN NOT MATCHED THEN //不匹配则插入
INSERT (id,name) VALUES (t2.id,t2.name);
merge into 的核心其实就是当有记录存在,则update;不存在,则insert。
pg对应的是upsert语法,其核心都是一样的,有则更新,无则插入;
在postgre9.5之前,其upsert语法如下:
WITH upsert AS (
UPDATE test1
SET col1 = test2.col1
FROM test2
WHERE test1.id = test2.id
RETURNING test1.*
)
INSERT INTO test01
SELECT *
FROM test2
WHERE NOT EXISTS (
SELECT 1
FROM upsert b
WHERE test2.id = b.id
);
在postgre9.5及之后,Oracle的 merge into 转化为 -- >PostgreSQL 的 INSERT INTO ... ON CONFLICT .. update...
例如:
insert into t1 select id,name from t2 ON CONFLICT(id) do update set name=excluded.name where t1.id=excluded.id;
也可以写成 insert into ()values()ON CONFLICT(主键列表) do update set name=excluded.name ... where ...
最新文章
- 【CSS进阶】CSS 颜色体系详解
- 使用 github + jekyll 搭建个人博客
- java 27 - 10 反射之 动态代理的代码实现
- SQLite剖析之内核研究
- 中国Linux源镜像站大全
- Spark和hadoop的关系
- 再探Java基础——throw与throws
- 【剑指offer 面试题14】调整数组顺序使奇数位于偶数前面
- Django Errors Archive
- 关于 jsp:include 传参的用法
- VMware 安装centOS6.4虚拟机以及基础环境搭建
- wamp mysql 创建主从数据库
- 1.初入GitHub
- FREERTOS学习笔记
- 关于 登录框的测试的一些case
- 2009 Putnam Competition B3
- 用kettle从mysql中使用存储过程读取数据写入到sqlserver数据库
- 微信小程序顶部(navigationBar)设置为透明
- P4363 [九省联考2018]一双木棋chess
- 安装JavaFX Scene Builder,并配置到Eclipse
热门文章
- 使用java代码调用rabbitmq接口进行新增编辑mq用户、虚拟机vhost、动态创建交换机exchange、队列queue以及设置权限,绑定vhost与exchange等操作
- 完整数据分析流程:Python中的Pandas如何解决业务问题
- 1.MAC获取文件路径;2.MAC使用SSH连接远程服务器,实现文件上传下载
- 主线程-创建Thread类的子类
- 如何找到CSDN中关注的用户和粉丝?
- 在GCP的Kubernetes上安装dapr
- 2023牛客寒假算法基础集训营5 A-L
- Java的两个好用的工具包 Apache commons
- JAVA虚拟机02---JAVA虚拟机运行时数据区域简介
- IIS服务器SSL证书安装 (pfx文件不能直接运行时)