删除没有主键的重复mysql行

Dam*_*Sia 13 mysql

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

user_id category_id
1            2
1            3
1            4
1            2
2            2
2            3
2            2
Run Code Online (Sandbox Code Playgroud)

Adr*_*ish 20

 CREATE TABLE temp SELECT DISTINCT * FROM tablename;
 ALTER TABLE tablename RENAME junk;
 ALTER TABLE temp RENAME tablename;
Run Code Online (Sandbox Code Playgroud)

  • @diEcho OP 要求不同的行 - 而不是不同的 user_id。 (2认同)
  • 哇,不知道那么简单.非常感谢@adrian (2认同)
  • @Damian :-)很高兴它适合你.哦注意 - 如果你有原始表,你将失去任何其他索引. (2认同)

mda*_*man 5

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

insert into new_better_table
select user_id, category_id from old_table group by user_id, category_id
Run Code Online (Sandbox Code Playgroud)