数据库表数据存在更新不存在插入的SQL语句

1、postgres数据库

INSERT INTO table (clumn1,clumn2)

VALUES (values1,values2)

ON conflict (clumn1)

DO UPDATE SET climn1='values' ,clumn2='value2'

直接上图

在mybatis的mapper里面酱紫写

<insert id="insert" parameterType="com.baosight.etl.entity.JobMonitor"> 
insert into "${tenant}".j_job_monitor(
 <if test="jobId != null and jobId != ''">
 job_id 
</if> 
<if test="jobStartTime != null and jobStartTime != ''">
 ,j_monitor_start_time 
</if> 
<if test="jobEndTime != null and jobEndTime != ''"> 
,j_monitor_end_time 
</if>
 )
 values
 ( 
<if test="jobId != null and jobId != ''">
 #{jobId} 
</if> 
<if test="jobStartTime != null and jobStartTime != ''">
 ,#{jobStartTime} 
</if> 
<if test="jobEndTime != null and jobEndTime != ''"> 
,#{jobEndTime} 
</if>
 ) 
on conflict(job_id) 
do update <set> 
<if test="jobStartTime != null and jobStartTime != ''"> 
j_monitor_start_time = #{jobStartTime},
 </if> 
<if test="jobEndTime != null and jobEndTime != ''"> 
j_monitor_end_time = #{jobEndTime} 
</if>
 </set> 
</insert>

2、db2数据库

MERGE INTO ${eplatSchema}.TBEDQ01 t1

USING (SELECT #pageEname# AS PAGE_ENAME FROM "SYSIBM".DUAL) t2

ON (t1.PAGE_ENAME=t2.PAGE_ENAME)

WHEN MATCHED THEN

UPDATE SET

PAGE_CNAME=#pageCname#,

REC_REVISOR=#recRevisor#,

REC_REVISE_TIME=#recReviseTime#,

WHEN NOT MATCHED THEN

INSERT

(PAGE_ID, PAGE_ENAME, PAGE_CNAME, )

VALUES

(#pageId#, #pageEname# ,#pageCname#)

3、mysql数据库

INSERT INTO TABLE
(TREE_ID,
TREE_NAME,
TREE_PID
)
VALUES (#treeId#, #treeName#, #treePid#)
ON DUPLICATE KEY
UPDATE
TREE_ID = #treeId#,
TREE_NAME = #treeName#,
TREE_PID = #treePid#

4、oracle数据库

MERGE INTO TABLE t1
USING (SELECT count(*) CO FROM TABLE WHERE TREE_ID = #treeId#) t2
ON (t2.CO &lt;&gt; 0)
WHEN MATCHED THEN
UPDATE SET
TREE_NAME = #treeName#,
WHEN NOT MATCHED THEN
INSERT
(TREE_ID,
TREE_NAME,
TREE_PID
)
VALUES (#treeId#, #treeName#, #treePid#)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值