如何从mysql表中删除部分重复项?

时间:2011-05-01 23:54:10

标签: mysql

我有一个mysql表。如何根据三列删除部分重复项?是否可以将更改应用于当前表?如果不是解决方案是什么?

例:
目前的表格 姓氏.........名字.......公司名称........责任.......第5栏 McKain ...............恭......... XYZ ....................... ........甲................................甲
McKain .......... .... Christine ......... XYZ ........................ ..... B ............................... B
Morrell ...............莎莉.............. ABC .................. ............ A ............................... A
Motu .................. Timothy ........... EFG .................. ...........我................................我

结果表:

姓氏.........名字.......公司名称........责任.......第5栏 McKain ...............恭......... XYZ ....................... ........甲................................甲
Morrell ...............莎莉.............. ABC .................. ............ A ............................... A
Motu .................. Timothy ........... EFG .................. ...........我................................我

如果可能的话,请告诉我一个简单的方法来在堆栈溢出中添加表格。

1 个答案:

答案 0 :(得分:0)

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;