删除没有主键的重复mysql行

时间:2011-11-16 05:18:20

标签: mysql

嗨我有一个没有主键的mysql表,我需要删除重复的行。我怎么能这样做?

user_id category_id
1            2
1            3
1            4
1            2
2            2
2            3
2            2

3 个答案:

答案 0 :(得分:20)

 CREATE TABLE temp SELECT DISTINCT * FROM tablename;
 ALTER TABLE tablename RENAME junk;
 ALTER TABLE temp RENAME tablename;

答案 1 :(得分:2)

由于无法区分2个相同的行,因此无法仅删除其中一个行。您需要考虑的方式是这样的:

insert into new_better_table
select user_id, category_id from old_table group by user_id, category_id

答案 2 :(得分:0)

可以使用默认值为type的{​​{1}}标志,并且仅复制标志设置为dirty的单个记录,然后简单地删除所有脏记录。这样,您就不需要另一个表。

假设您已经创建了一个1标志,其默认值为0

dirty

然后,您可以删除脏记录:

1

别忘了删除脏标志。完成了。