MySQL删除重复数据,只保留id最小的一条

1 SQL脚本如下所示

CREATE TABLE `student` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

INSERT INTO `student` VALUES ('1', '张三');
INSERT INTO `student` VALUES ('2', '李四');
INSERT INTO `student` VALUES ('3', '张三');

2 表中数据

id name
1 张三
2 李四
3 张三

3 删除重复数据

3.1 第一种方式,使用group by
DELETE FROM student
WHERE id NOT IN (
		SELECT id
		FROM
			(
				SELECT
					MIN(id) id
				FROM
					student
				GROUP BY
					`name`
			) cc
	);
3.2 第二种使用连接
DELETE a
FROM
	student a,
	student b
WHERE
	a.id > b.id
AND a.`name` = b.`name`;

你可能感兴趣的:(MySQL)