为了账号安全,请及时绑定邮箱和手机立即绑定

删除MySQL中的重复行

删除MySQL中的重复行

三国纷争 2019-05-28 16:59:53
删除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重复的未来将会出错。与往常一样,您可能希望在运行此类内容之前进行备份...


查看完整回答
反对 回复 2019-05-28
?
哈士奇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;


查看完整回答
反对 回复 2019-05-28
  • 4 回答
  • 0 关注
  • 625 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信