删除MySQL中的重复行我有一个包含以下字段的表:id (Unique)url (Unique)title
company
site_id现在,我需要删除具有相同的行title, company and site_id。一种方法是使用以下SQL和脚本(PHP):SELECT title, site_id, location, id, count( * ) FROM jobsGROUP BY site_id, company, title, locationHAVING count( * ) >1运行此查询后,我可以使用服务器端脚本删除重复项。但是,我想知道是否只能使用SQL查询来完成。
4 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
一个非常简单的方法是UNIQUE
在3列上添加索引。编写ALTER
语句时,请包含IGNORE
关键字。像这样:
ALTER IGNORE TABLE jobsADD UNIQUE INDEX idx_name (site_id, title, company);
这将删除所有重复的行。作为额外的好处,INSERTs
重复的未来将会出错。与往常一样,您可能希望在运行此类内容之前进行备份...
哈士奇WWW
TA贡献1799条经验 获得超6个赞
如果该IGNORE语句不能像我的情况那样工作,您可以使用以下语句:
CREATE TABLE your_table_deduped like your_table;
INSERT your_table_deduped SELECT * FROM your_table GROUP BY index1_id, index2_id;
RENAME TABLE your_table TO your_table_with_dupes;
RENAME TABLE your_table_deduped TO your_table;
#OPTIONAL
ALTER TABLE `your_table` ADD UNIQUE `unique_index` (`index1_id`, `index2_id`);
#OPTIONAL
DROP TABLE your_table_with_dupes;
添加回答
举报
0/150
提交
取消