mysql妙用:批量插入记录,遇到重复记录则为自动更新
2015-05-07 00:00
169 查看
摘要: 在更新大量数据时如果每条更新执行一次sql性能很低,也容易造成阻塞;批量更新时又有可能遇到主键重复的问题
在更新大量数据时可能同时遇到两个问题:
如果每条更新执行一次sql性能很低,也容易造成阻塞;
批量更新时又有可能遇到主键重复的问题
使用 ON DUPLICATE KEY UPDATE 一条sql解决批量更新和主键重复问题(id为主键)
它不但对唯一主键有效,对复合主键同样有效,复合主键设置:
不过ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法,不要乱用哦
在更新大量数据时可能同时遇到两个问题:
如果每条更新执行一次sql性能很低,也容易造成阻塞;
批量更新时又有可能遇到主键重复的问题
使用 ON DUPLICATE KEY UPDATE 一条sql解决批量更新和主键重复问题(id为主键)
INSERT INTO mytable(id,pid,ele,anim) VALUES (?,?,?,?),(?,?,?,?),(?,?,?,?) ON DUPLICATE KEY UPDATE pid=VALUES(pid),ele=VALUES(ele) //pid=VALUES(pid),ele=VALUES(ele) 表示出现在values中某列的id字段值与表中已有id字段值重复时,会更新对应记录的这两个字段 //还可以指定其它值或进行运算:pid=pid+1,ele=ele-1 //因为这里未指定列 anim,所以遇到重复id的列,表中该列的 anim字段不会更新 //如果某列作为新记录被插入,则受影响行的值为1;如果表中原有的记录被更新,则受影响行的值为2
它不但对唯一主键有效,对复合主键同样有效,复合主键设置:
ALTER TABLE mytable ADD(CONSTRAINT PRIMARY KEY(id,pid));
不过ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法,不要乱用哦
相关文章推荐
- ON DUPLICATE KEY UPDATE批量插入记录,遇到重复记录则为自动更新
- mysql妙用:批量插入记录,遇到重复记录则为自动更新
- 批量插入记录,遇到重复记录则为自动更新
- MySQL不重复插入,记录不存在则插入,存在则更新
- Django 使用 MySQL 存储时间中遇到的问题(在数据库中记录插入时间、更新时间、删除时间)
- mysql timestamp 自动记录首次插入时间与自动更新修改时间
- MYSQL中防止插入重复记录的解决方案(无重复值更新)
- MySQL建立唯一索引实现插入重复自动更新
- Mysql存在唯一索引条件下,实现插入如果重复则自动更新
- MySQL 插入记录时自动更新时间戳
- 已解决:mysql 批量插入生成UUID重复问题
- mysql表中不存在记录则插入否则更新记录
- mysql 避免记录重复插入
- Java--批量插入更新在一条sql里解决-mybatis-mysql-联合主键(建立唯一索引)
- mysql记录存在就更新不存在就插入
- MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
- MySQL基本操作(六):建表,插入多条记录,更新表中特定数据
- 记录:mysql中的case when|on duplicate key update|重复插入返回主键的用法
- mysql中一条insert语句批量插入多条记录
- Mysql中created_at字段与updated_at字段关于自动更新与自动插入时间戳