我有一个包含以下字段的表:

id (Unique)
url (Unique)
title
company
site_id


现在,我需要删除具有相同title, company and site_id的行。一种方法是使用以下SQL以及脚本(PHP):

SELECT title, site_id, location, id, count( * )
FROM jobs
GROUP BY site_id, company, title, location
HAVING count( * ) >1


运行此查询后,我可以使用服务器端脚本删除重复项。

但是,我想知道是否只能使用SQL查询来完成。

最佳答案

一种简单的方法是在3列上添加UNIQUE索引。编写ALTER语句时,请包含IGNORE关键字。像这样:

ALTER IGNORE TABLE jobs
ADD UNIQUE INDEX idx_name (site_id, title, company);


这将删除所有重复的行。另外一个好处是,将来重复的INSERTs将出错。与往常一样,您可能需要在运行类似内容之前进行备份...

关于mysql - 在MySQL中删除重复的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50890245/

10-16 23:40