【mysql】mysql 数据存在更新,不存在插入

1.REPLACE

       删除更新:要求存在唯一索引,主键等唯一标识,流程是先删除再插入,所以永远可以保证最新。使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。如果行作为新记录被insert,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。

-- 删除更新
REPLACE INTO golf_game_plan ( create_time, modify_time, user_id, plan_date )
VALUES
	( now( ), now( ), 11363, '2019-09-13 00:00:00' );
	
	

2.ON DUPLICATE KEY UPDATE

       要求存在唯一索引,主键等唯一标识,根据表中唯一索引判断,如下所示user_id字段就添加了唯一索引。如果行作为新记录被insert,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。

-- 唯一索引更新
INSERT INTO golf_game_plan ( create_time, modify_time, user_id, plan_date )
VALUES
	( now( ), now( ), 11363, '2019-09-13 00:00:00' ) 
	ON DUPLICATE KEY UPDATE plan_date = '2019-12-22 00:00:00', modify_time = now();
	

 3.EXISTS

        通过exists语法更新,判断是否存在记录,来决定插入或删除

INSERT INTO golf_game_plan ( create_time, modify_time, user_id, plan_date ) SELECT
now( ), now( ), 11369, '2019-09-13 00:00:00'
FROM
DUAL 
WHERE
	NOT EXISTS ( SELECT * FROM golf_game_plan WHERE id = 37 );
	

 4.IGNORE

        要求存在唯一索引,主键等唯一标识。流程是先删除再插入。

INSERT IGNORE INTO golf_game_plan ( create_time, modify_time, user_id, plan_date )
VALUES
	( now( ), now( ), 11369, '2019-09-13 00:00:00' );
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值