如何添加复合主键并删除现有表上的重复项?

时间:2014-01-20 10:30:48

标签: mysql

我有一个非常简单的表名为favorites,其中包含两列用户和内容。如何在这些列上添加复合主键并删除所有重复项(例如,相同的内容和用户值)

ALTER TABLE favorites
ADD PRIMARY KEY (user,content)

给#1062这样的错误 - 重复'PRIMARY'重复输入'24 -26885'

2 个答案:

答案 0 :(得分:0)

首先删除像Mysql Duplicate Rows ( Duplicate detected using 2 columns )这样的重复行,然后创建复合主键

答案 1 :(得分:0)

这个问题很古老,但是一个简单的解决方案仍然可以帮助面临这个问题的人。
解决错误“ 键PRIMARY的重复条目xxx ”的方法是在表转储上使用REPLACE而不是INSERT。这样,将保留特定索引的最新记录。

  

REPLACE的工作原理与INSERT完全相同,不同之处在于,如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除该旧行。   https://dev.mysql.com/doc/refman/5.5/en/replace.html

步骤1。为您的表创建SQL转储文件

第2步。通过以下方式修改转储文件:

  • 将主键(或UNIQUE索引)添加到表定义

  • 使用 REPLACE INTO 代替 INSERT INTO (必须更改所有实例)

第3步。将更改的转储文件应用于数据库