背景
想要做数据同步,但不知道待同步的数据是新增或更新
于是想,如果数据库可以识别 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