如果数据库中的数据存在就修改,不在就新增

在MySQL如果添加一条数据,如果存在就修改,如果不存在就添加

三种办法

  1. replace into
    他的用法和insert into 一模一样,

insert into(a,b,c) values(1,2,3)
replace into(a,b,c) values(1,2,3)
1
2
作用:
insert into 添加数据时,如果不存在就添加,如果存在就报错
replace into 添加数据时,如果不存在就添加,如果存在就修改。他这里判断相同是根据唯一索引来判断的。

  1. insert ignore
    他的用法时在insert into中间 加一个关键字 ignore得到

insert ignore into(a,b,c) values(1,2,3)
1
同样是根据唯一索引来判断是否相同,如果相同忽略掉,如果不同进行修改

  1. ON DUPLICATE KEY UPDATE
    duplicate : 重复的
    on duplicate key update : 存在重复的key就修改

用法:

insert into(a,b,c) values(1,2,3)
on duplicate key update
a=11,b=22,c=33
1
2
3
语句理解: 假设a是唯一索引,如果数据库表存在a=1 的数据对象,就进行修改操作(a=11,b=22,c=33)
如果不存在a=1的数据条,就将(a=1,b=2,c=3) 添加进去。
on duplicate key update 后面跟上的第一个字段 必须是 唯一索引

3.2 如果要循环添加数据,并且使用 on duplicate key update 的话

INSERT INTO T_SYS_EXCHANGE (
CURRENCY_TYPE
, CURRENCY_CODE
, BANKCONVERSIONPRI
, ISSUE_DATE
, REMARK
, LANG_VER
, STATUS
, MARKET_ID
, ALIVE_FLAG
, EXTEND1
, EXTEND2
, EXTEND3
, EXTEND4
, EXTEND5
, EXTEND6
, EXTEND7
, EXTEND8
, EXTEND9
, EXTEND10
, CREATE_USER
, CREATE_USER_NAME
, CREATE_DATE
, UPDATE_USER
, UPDATE_USER_NAME
, UPDATE_DATE
, VERSION
)
VALUES

(
#{item.currencyType}
, #{item.currencyCode}
, #{item.bankconversionpri}
, #{item.issueDate}
, #{item.remark}
, #{item.langVer}
, #{item.status}
, #{item.marketId}
, ‘1’
, #{item.extend1}
, #{item.extend2}
, #{item.extend3}
, #{item.extend4}
, #{item.extend5}
, #{item.extend6}
, #{item.extend7}
, #{item.extend8}
, #{item.extend9}
, #{item.extend10}
, #{item.createUser}
, #{item.createUserName}
, #{item.createDate}
, #{item.updateUser}
, #{item.updateUserName}
, #{item.updateDate}
, 1
)

ON DUPLICATE KEY UPDATE
CURRENCY_TYPE=values(CURRENCY_TYPE)
, CURRENCY_CODE=values(CURRENCY_CODE)
, BANKCONVERSIONPRI=values(BANKCONVERSIONPRI)
, ISSUE_DATE=values(ISSUE_DATE)
, REMARK=values(REMARK)
, LANG_VER=values(LANG_VER)
, STATUS=values(STATUS)
, MARKET_ID=values(MARKET_ID)
, ALIVE_FLAG=values(ALIVE_FLAG)
, EXTEND1=values(EXTEND1)
, EXTEND2=values(EXTEND2)
, EXTEND3=values(EXTEND3)
, EXTEND4=values(EXTEND4)
, EXTEND5=values(EXTEND5)
, EXTEND6=values(EXTEND6)
, EXTEND7=values(EXTEND7)
, EXTEND8=values(EXTEND8)
, EXTEND9=values(EXTEND9)
, EXTEND10=values(EXTEND10)
, CREATE_USER=values(CREATE_USER)
, CREATE_USER_NAME=values(CREATE_USER_NAME)
, CREATE_DATE=values(CREATE_DATE)
, UPDATE_USER=values(UPDATE_USER)
, UPDATE_USER_NAME=values(UPDATE_USER_NAME)
, UPDATE_DATE=values(UPDATE_DATE),
VERSION=(VERSION+1)

缺点是:如果数据全都相同,也会进行修改,增加它的版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值