MySQLは重複データを削除し、idの最小の1つだけを保持する

4919 ワード

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 groupbyを使用する第1の方法
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`;