MYSQL 避免插入重复数据

一, 准备测试数据: 

表名ceshi_user,里面有三个字段,username,age。

需求是执行如下SQL语句插入数据: 

insert into ceshi_user(username,age)VALUES('ceshi1',20);

insert into ceshi_user(username,age)VALUES('ceshi2',30);

insert into ceshi_user(username,age)VALUES('ceshi1',50);

如果用户名出现重复就修改最新一条数据,例如:

---------------------

 username  |   age

---------------------

 ceshi1       |   50

---------------------

 ceshi2      |   30 

---------------------


二, 解决方法:

1. username加一个唯一索引 (alter table ceshi_user add unique index(username);)

    replace into ceshi_user(username,age)VALUES('ceshi1',20);

    replace into ceshi_user(username,age)VALUES('ceshi2',30);

    replace into ceshi_user(username,age)VALUES('ceshi1',50);

  根据用户名是唯一索引, replace语句会删除已经有的记录,把新的数据插入表. 取到了用户名始终不会重复的需求

 

2. username加一个唯一索引 (alter table ceshi_user add unique index(username);)

   INSERT INTO ceshi_user (`user_name`,`age`) VALUES ('ceshi1','20') ON DUPLICATE KEY UPDATE age = '50';

   根据用户名是唯一索引,上面这条语句发现数据表已经有了重复用户名就会执行update语句.没有发现重复语句就会执行insert语句.


评论

0条评论