在生产环境中,有时候我们会遇到这样的问题,就是去掉数据库中2列值相同的数据,并且留下一条语句,解决这个问题可以利用唯一联合索引

创建测试表

CREATE TABLE `test03` (
`id` INT(11) ,
`uid` INT(11) DEFAULT NULL);


INSERT INTO test03(id,uid) VALUES (1,1),(1,2),(1,1),(1,2),(1,1);


select * from test03;

id    uid

1    1

1    2

1    1

1    2

1    1



创建联合唯一索引

ALTER IGNORE TABLE test03 ADD UNIQUE INDEX  id_uid(id,uid);

select * from test03;

id    uid

1    1

1    2


这样就能完美的去掉2列重复的数据了




利用sql去重,一般id为主键,不会重复,所以利用id来进行去重

1、首先创建临时表存储重复记录的最大id或者最小id

2、删除id不在临时表中的数据