mysql几种插入机制

1, 使用ignore关键字

INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.com', '99999', '9999');

如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用;
这样当有重复记录就会忽略,执行后返回数字0

2, 使用replace

REPLACE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test569', '99999', '123');
执行步骤:
  1. 尝试把新行插入到表中
  2. 当因为对于主键或唯一关键字出现重复关键字错误而造成插入失败时:
    2.1 从表中删除含有重复关键字值的冲突行
    2.2 再次尝试把新行插入到表中
旧记录与新记录有相同的值的判断标准就是:

表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。

返回值

REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和

3,ON DUPLICATE KEY UPDATE

INSERT INTO `table` (`a`, `b`, `c`) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE `c`=`c`+1; 

您可以在UPDATE子句中使用VALUES(col_name)函数从INSERT…UPDATE语句的INSERT部分引用列值。譬如:

INSERT INTO `table` (`a`, `b`, `c`) VALUES (1, 2, 3), (4, 5, 6) ON DUPLICATE KEY UPDATE `c`=VALUES(`a`)+VALUES(`b`);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值