加载中...
加载中...
SQL 如果不存在则插入,存在则不做操作

SQL 如果不存在则插入,存在则不做操作 原创

SQL 如果不存在则插入,存在则不做操。

Oracle

语法

复制收展SQLmerge into tableName
using dual on (条件)
when not matched then
insert(a,b)
values('a','b')
  • 1
  • 2
  • 3
  • 4
  • 5

实例

复制收展XML<!--如果不存在则插入-->
<update id="insertByMemberNameNoExist" parameterClass="member" >
merge into CFB_MEMBER cm
using dual on (cm.MEMBERNO = #memberNo#)
when not matched then
insert (MEMBERNO, MEMBERNAME, MEMBERTREENO, OPEN_FLAG, QUOTA_MODE, USESCALE, CLTNO, PAY_MODE, INCOME_MODE, AUTO_CARRYOVER)
values (#memberNo#, #memberName#, #memberTreeNo#, #activeFlag#, #quotaMode#, #useScal#, #cltNo#, #payMode#, #incomeMode#, #autoCarryover#)
</update>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

--

MySQL

语法
ON DUPLICATE KEY UPDATE
实例
INSERT INTO tableName(a,b,c) VALUES(1, 1, 1) ON DUPLICATE KEY UPDATE name='1';

--

ON DUPLICATE KEY UPDATE 特别适用于多行插入。
如果INSERT多行记录, ON DUPLICATE KEY UPDATE后面字段的值如何指定?
一条INSERT语句中只能有一个ON DUPLICATE KEY UPDATE,如果是多行记录,结果他会更新哪一行记录,还是更新所有需要更新的行。
实际上是使用VALUES()函数,可以解决这个问题。

实例

字段a被定义为UNIQUE,如果插入记录的a值与原有记录重复,则更新原有记录,否则插入新行。

复制收展SQLINSERT INTO TABLE (a,b,c) VALUES
(1,1,1),
(1,2,2),
(3,3,3)
ON DUPLICATE KEY UPDATE a=VALUES(a);
  • 1
  • 2
  • 3
  • 4
  • 5


tip:使用on duplicate key update会导致自增的主键跳跃自增

没有更多推荐了 [去首页]
image
文章
357
原创
284
转载
73
翻译
0
访问量
199056
喜欢
47
粉丝
6
码龄
5年
资源
0

文章目录

加载中...
0
0