可能重复:
删除MySQL中的重复行
如何从MySQL表中删除所有重复数据?
例如,使用以下数据:
SELECT * FROM names;
+----+--------+
| id | name |
+----+--------+
| 1 | google |
| 2 | yahoo |
| 3 | msn |
| 4 | google |
| 5 | google |
| 6 | yahoo |
+----+--------+
Run Code Online (Sandbox Code Playgroud)
我会使用,SELECT DISTINCT name FROM names;如果它是一个SELECT查询.
我怎么做DELETE才能删除重复项并保留每个重复记录?
我有一个包含以下字段的表:
id (Unique)
url (Unique)
title
company
site_id
Run Code Online (Sandbox Code Playgroud)
现在,我需要删除具有相同的行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
Run Code Online (Sandbox Code Playgroud)
运行此查询后,我可以使用服务器端脚本删除重复项.
但是,我想知道是否只能使用SQL查询来完成.
我正在尝试使用ALTER IGNORE TABLE + UNIQUE KEY从MySQL表中删除重复项.MySQL文档说:
IGNORE是标准SQL的MySQL扩展.如果新表中的唯一键上存在重复项,或者启用了严格模式时出现警告,它将控制ALTER TABLE的工作方式.如果未指定IGNORE,则复制将中止并在发生重复键错误时回滚.如果指定了IGNORE,则只使用第一行在唯一键上具有重复项的行.其他冲突的行将被删除.不正确的值将截断为最接近的匹配可接受值.
当我运行查询时......
ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field)
Run Code Online (Sandbox Code Playgroud)
...我仍然收到错误#1062 - 关键'dupidx'重复输入'blabla'.