当前位置:首页 > mysql > 正文

mysql去除重复的数据(mysql根据多个字段去除重复数据)

  • mysql
  • 2024-04-05 04:21:58
  • 6687
去除 MySQL 中重复数据的详细指南
要素:
1. 语法:
DELETE FROM table_name
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM table_name
GROUP BY column1, column2, ...
)
2. rowid:
主键或唯一索引字段的名称。
如果没有主键或唯一索引,则可以使用 MySQL 的 ROW_NUMBER() 函数生成一个伪主键。
3. column1, column2, ...:
要用来识别重复行的列。
这些列通常是组合键或唯一约束。
4. 举例:
示例表:
CREATE TABLE my_table (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
插入重复数据:
INSERT INTO my_table (name, email) VALUES ('John Doe', 'johndoe@gmail.com');
INSERT INTO my_table (name, email) VALUES ('John Doe', 'johndoe@gmail.com');
去除重复数据:
DELETE FROM my_table
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM my_table
GROUP BY name, email
);
结果:
表中只保留一条 'John Doe', 'johndoe@gmail.com' 记录,因为这是rowid 最小的记录。
其他注意事项:
此查询将删除除第一个插入的记录之外的所有重复记录。
如果需要保留某些重复记录,则可以使用以下查询:
DELETE FROM my_table
WHERE rowid > (
SELECT MIN(rowid)
FROM my_table
GROUP BY name, email
);
此查询将删除rowid 大于第一个插入的记录的所有重复记录,从而保留了第一个插入的记录。