mysql - 删除 MySQL 中的重复行

标签 mysql sql duplicates subquery sql-delete

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

id (Unique)
url (Unique)
title
company
site_id

现在,我需要删除具有相同 title、company 和 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);

这将删除所有重复的行。作为一个额外的好处, future 的重复 INSERTs 将出错。与往常一样,您可能需要在运行此类操作之前进行备份...

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

相关文章:

php - 在不同的字符出现处将字符串转换为数组

c# - 本地主机数据库 C# 的连接错误

php - 提供的参数不是有效的mySQL资源

php - Yii框架未定义偏移: 0

sql - 如何从另一个表中按日期选择最新项目

sql - 具有内连接的重复字段

sql - 如何在 SQL Server 的列中查找重复数字。例如11111、33333333、5555555555、7777777等

mongodb - 删除 MongoDB 中的重复项

mysql - 基于位掩码在mysql中查找重复记录

sql - 使用 mysql 5.1.41 更新表中最高的几行