我有一个 mysql 表。如何删除基于三列的部分重复项?是否可以将更改应用于当前表?如果不是,解决方案是什么?
例子:
当前表
姓氏…………名字…………公司名称…………职责…………Column5
麦凯恩…………克里斯汀…………XYZ………… ......................................................A
麦凯恩………………克里斯汀…………XYZ………… .....B ..................... B
莫雷尔…………莎莉………………………… .....................................................
Motu ................Timothy ............ EFG ..................... …………我………………………………………………………………………………………………………………
结果表:
姓氏…………名字…………公司名称…………职责…………Column5
麦凯恩…………克里斯汀…………XYZ………… ......................................................A
莫雷尔…………莎莉………………………… .....................................................
Motu ................Timothy ............ EFG ..................... …………我………………………………………………………………………………………………………………
如果可能的话请告诉我一个在堆栈溢出中添加表格的简单方法..
最佳答案
将 tableName 替换为您的表名,并将 GROUP BY/UNIQUE INDEX 字段 替换为您希望唯一的字段。
警告:使用的 GROUP BY 在删除重复项时只会选择第一个条目。
如果出现问题,您在 tableName_old 中仍有原始数据的副本。
-- Create a new table that's filtered
CREATE TABLE newTable
(SELECT *
FROM tableName
GROUP BY LastName, FirstName, Company);
-- Add a unique index of the fields you want
ALTER TABLE newTable ADD UNIQUE INDEX ix_unique (LastName, FirstName, Company);
-- Rename the tables around
RENAME TABLE tableName TO tableName_old;
RENAME TABLE newTable TO tableName;
关于mysql - 如何从 mysql 表中删除部分重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852291/