删除重复记录并随机保留一个

use*_*173 3 mysql

如何删除重复记录并在MYSQL中随机保留一条记录?

Bar*_*mar 6

使用ALTER TABLE添加唯一索引,并指定IGNORE选项,因此不会出现错误:

ALTER IGNORE TABLE mytable 
ADD UNIQUE INDEX (products_id, categories_id);
Run Code Online (Sandbox Code Playgroud)

更新:

要使选择是随机的,请创建一个与旧模式具有相同模式的新表,但在这些列上使用唯一键.然后做:

INSERT IGNORE INTO newtable
SELECT * from oldtable
ORDER BY RANDOM();
Run Code Online (Sandbox Code Playgroud)

随机排序中的每个副本中的第一个将插入到新表中,其余的将由于IGNORE选项而被忽略.