我有一个包含以下字段的表:
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 查询来完成。
原文由 Chetan 发布,翻译遵循 CC BY-SA 4.0 许可协议
一个非常简单的方法是在 3 列上添加一个
UNIQUE
索引。当您编写ALTER
语句时,请包含IGNORE
关键字。像这样:这将删除所有重复的行。作为一个额外的好处,未来
INSERTs
是重复的将出错。与往常一样,您可能希望在运行此类操作之前进行备份……