我需要清除我的数据库,我需要删除所有基于 3 列的重复条目。
我试过这个:
ALTER IGNORE TABLE prod_assoc_variacao ADD UNIQUE INDEX idx_name (fk_produto, fk_grupo, fk_classificador )
但我收到错误消息,告诉我有几行有重复条目,因此删除重复条目不起作用。
所以我也试过了:
DELETE
FROM prod_assoc_variacao
WHERE prod_assoc_variacao.id IN (
SELECT MAX(id)
FROM prod_assoc_variacao
GROUP BY fk_produto, fk_grupo, fk_classificador
HAVING COUNT(*) > 1)
但我收到 [Err] 1093 - 您不能在 FROM 子句中指定目标表 'prod_assoc_variacao' 进行更新。
现在我不知道该怎么办,我的 sql 不是很好,也不知道。
我非常感谢任何帮助。
提前致谢。
最佳答案
可以在删除时加入表本身:
delete prod_assoc_variaca from prod_assoc_variaca
inner join prod_assoc_variaca p2 on prod_assoc_variaca.fk_produto = p2.fk_produto
and prod_assoc_variaca.fk_grupo = p2.fk_grupo
and prod_assoc_variaca.fk_classificador = p2.fk_classificador
and prod_assoc_variaca.id < p2.id;
只需重新阅读您的帖子——如果您想删除较高的 ID,请改用 >。
关于mysql - 根据 3 列从表中清除重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16176011/