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

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

三种办法

1. replace into

他的用法和insert into 一模一样,

insert into(a,b,c) values(1,2,3)
replace into(a,b,c) values(1,2,3)

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

2. insert ignore

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

insert ignore into(a,b,c) values(1,2,3)

同样是根据唯一索引来判断是否相同,如果相同忽略掉,如果不同进行修改

3. 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

语句理解: 假设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 id="updateBatch" parameterType="com.obei.ego.server.common.exchange.persistence.entities.Exchange">
        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
        <foreach collection="list" item="item" index="index" separator=",">
            (
            #{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
            )
        </foreach>
        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)
    </insert>

你可能感兴趣的:(Mysql,mysql,java)