我有一个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 .................. ...........我................................我
如果可能的话,请告诉我一个简单的方法来在堆栈溢出中添加表格。
答案 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;