猿问

删除MySQL中的重复行

删除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查询来完成。


三国纷争
浏览 626回答 4
4回答

守着星空守着你

一个非常简单的方法是UNIQUE在3列上添加索引。编写ALTER语句时,请包含IGNORE关键字。像这样:ALTER IGNORE TABLE jobsADD UNIQUE INDEX idx_name (site_id, title, company);这将删除所有重复的行。作为额外的好处,INSERTs重复的未来将会出错。与往常一样,您可能希望在运行此类内容之前进行备份...

哈士奇WWW

如果该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;#OPTIONALALTER TABLE `your_table` ADD UNIQUE `unique_index` (`index1_id`, `index2_id`);#OPTIONALDROP TABLE your_table_with_dupes;
随时随地看视频慕课网APP
我要回答