嗨我有一个没有主键的mysql表,我需要删除重复的行。我怎么能这样做?
user_id category_id
1 2
1 3
1 4
1 2
2 2
2 3
2 2
答案 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
别忘了删除脏标志。完成了。