MySQL:不存在则插入,存在则更新或忽略 INSERT ... ON DUPLICATE KEY UPDATE(以联合主键为例)
2019-04-30 14:39
501 查看
MySQL语法:如果数据不存在则插入,存在则更新或忽略。
MySQL语法支持如果数据不存在则插入,存在则更新或忽略。
INSERT INTO `表名`(属性1,属性2,属性3) VALUES('值1','值2','值2') ON DUPLICATE KEY UPDATE 属性3='值3';
本文以联合主键(即就是用多个字段一起作为一张表的主键)为例,对这一语法做测试示例。
数据表项示例:其中t_flid和t_id为联合主键。
- SQL语句示例:
如果行作为新记录被插入,则受影响行的值为1;
INSERT INTO `t_fdt`(t_flid,t_id,t_time) VALUES('333','222','111') ON DUPLICATE KEY UPDATE t_time='000';
- 再次执行这一语句,因为数据库中这一主键的数据项已存在故执行update。可见如果原有的记录被更新,则受影响行的值为2。
- 我们更换了t_id这一值,执行的是无则插入语句。可见当表中有多个主键时,联合主键联合保证唯一索引。
INSERT INTO `t_fdt`(t_flid,t_id,t_time) VALUES('333','444','111') ON DUPLICATE KEY UPDATE t_time='000';
能有同样效果的语句还有REPLACE INTO:如果插入的数据会导致UNIQUE 索引或PRIMARY KEY发生冲突/重复,则先删除旧数据再插入最新的数据,此时受影响的行数也是2(与INSERT … ON DUPLICATE KEY UPDATE类似,这里并未做演示示例)。
如果你想了解更多关于INSERT INTO … ON DUPLICATE KEY的功能说明,详见MySQL官方参考文档:13.2.6.2 INSERT … ON DUPLICATE KEY UPDATE Syntax
注意:ON DUPLICATE KEY UPDATE和REPLACE INTO只是MySQL的特有语法,并不是SQL标准语法!
相关文章推荐
- MYSQL主键存在则更新,不存在则插入的解决方案(ON DUPLICATE KEY UPDATE)
- MYSQL主键存在则更新,不存在则插入的解决方案(ON DUPLICATE KEY UPDATE)
- mysql-ignore、replace、on duplicate key update(不存在则插入,存在则更新)
- MySQL记录存在则更新,不存在插入on duplicate key update
- mysql重复插入insert时更新ON DUPLICATE KEY UPDATE
- mysql insert ignore .. ON DUPLICATE KEY 与oracle MERGE INTO 可以相互替换 批量插入存在则替换,不存在则插入
- mysql重复插入insert时更新ON DUPLICATE KEY UPDATE
- SQL语句实现不存在即插入,存在则increase某字段的功能insert into … on duplicate key update
- MySQL 当记录不存在时insert,当记录存在时update(ON DUPLICATE KEY UPDATE, REPLACE)
- ON DUPLICATE KEY UPDATE 当记录不存在时插入,当记录存在时更新
- (5) MySQL INSERT插入条件判断:如果不存在则插入 || MySQL中replace into ||INSERT INTO … ON DUPLICATE KEY U...
- mysql 如果不存在则插入(insert) 如果存在则更新(update)
- MySQL_插入更新 ON DUPLICATE KEY UPDATE
- MySql避免"重复插入记录"的方法(INSERT ignore into,Replace into,ON DUPLICATE KEY UPDATE)
- MySQL_插入更新 ON DUPLICATE KEY UPDATE
- 记录:mysql中的case when|on duplicate key update|重复插入返回主键的用法
- mysql 插入重复值 INSERT ... ON DUPLICATE KEY UPDATE
- MySQL插入或更新 ON DUPLICATE KEY UPDATE
- mysql 批量更新语句 INSERT ON DUPLICATE KEY UPDATE
- mysql 插入更新判断 ON DUPLICATE KEY UPDATE 和 REPLACE INTO