【达梦数据库】MySQL 的ON DUPLICATE KEY UPDATE语句在达梦数据库中使用的方式

背景

想要做数据同步,但不知道待同步的数据是新增或更新
于是想,如果数据库可以识别 InsertOrUpdate 就好了

使用的是达梦数据库

but:
1、达梦是没有 ON DUPLICATE KEY UPDATE 这样的语句的
2、达梦有merge into语句,可以平替一下。(虽然莫名感觉性能不会很高的样子)

参考使用样式:

1、针对一条数据的更新或者插入可以这样执行:

MERGE INTO t_person T1
USING (
  SELECT
  1 id,
  'test' mc,
  1 sex,
  25 age,
  FROM dual
) T2 ON (T1.id = T2.id)
WHEN NOT MATCHED THEN INSERT(id, mc, sex,
age) VALUES
(T2.id, T2.mc, T2.sex, T2.age)
WHEN MATCHED THEN UPDATE
SET T1.mc = T2.mc,T1.sex = T2.sex,T1.age = T2.age


2、针对多条数据进行批量更新或插入操作可以这样执行:

 MERGE INTO t_person T1
  USING (
  <foreach collection="list" item="item" index="index" separator="UNION ALL">
  SELECT
  #{item.id} id,
  #{item.mc} mc,
  #{item.sex} sex,
  #{item.age} age
  FROM dual
</foreach>
) T2 ON (T1.id = T2.id )
  WHEN NOT MATCHED THEN INSERT(id, mc, sex,
  age) VALUES
  (T2.id, T2.mc, T2.sex, T2.age)
  WHEN MATCHED THEN UPDATE
  SET T1.mc = T2.mc,T1.sex = T2.sex,T1.age = T2.age

参考:
原文链接:https://blog.csdn.net/qq_30490591/article/details/103294777

posted @ 2023-02-02 15:08  aaacarrot  阅读(3160)  评论(0编辑  收藏  举报