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

3

我有一个非常简单的名为favorites的表格,其中包含两个列user和content。我该如何在这些列上添加组合主键并移除所有的重复记录(例如相同的content和user值)?

ALTER TABLE favorites
ADD PRIMARY KEY (user,content)

给出错误信息如 #1062 - 主键'PRIMARY'上存在重复条目'24-26885'。
2个回答

0
问题有些老旧,但一个简单的解决方案仍然可以帮助到遇到这个问题的人。
绕过 '重复条目xxx,主键为PRIMARY' 错误的方法是在表转储中使用 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步. 将更改后的转储文件应用到您的数据库。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接