MySQL插入新记录的三种方法:判断记录是否存在,存在则...
需要一次性修改MySQL里的数据时,我倾向于写SQL实现,而不是写个脚本发布到线上执行。简单的增删改查不在话下,不过有些情况稍微复杂,并且不常见,如果你不知道一条SQL就能实现,那就会花更多的时间去写脚本和走发布流程。以下几种情况你遇到过吗?
一、插入新记录前判断记录是否存在,如果存在就不插入,不存在则插入。
有以下这样一个用户表,现在需要一次性导入1000个用户信息,需求方给到一个Excel文件,要求:如果数据库中原来有相同的用户类型和昵称则不新增。
这里列举插入一条记录的SQL样例
二、判断记录是否存在,存在则更新,不存在则插入。
同样是往上面的 user 数据表插入1000条新数据,这次要求:如果数据库中原来有相同的登录名,则不插入新的记录,只更新原用户的类型和最后活跃时间。
表中的登录名username是唯一索引,这里需求用上它。插入新数据时,遇到唯一索引冲突时做更新操作,没有冲突就是新增。有两个方法可以实现:INSERT INTO 和 REPLACE INTO,他们的区别是REPLACE INTO会先删除旧数据再插入一条新数据,这意味着遇到相同的登录名时,旧数据会被删除,新数据的主键id与旧数据的id不一样。