我已经有一两天试图删除一些重复的数据库行,在我的系统出现轻微失败后出现在我的系统中,我试过了大多数(如果不是全部的话)我在Stackoverflow上找到的方法。我已经有好几种这些方法可以在我以前试图删除的mariadb和mysql上完美地工作了。删除重复的行(已搜索并尝试这里已经有)
这是我的表格结构。
ID |日期|经验| characterid
ID是唯一标识符(aka Auto Incremeting),每个字符ID在每个日期应该只有一个条目,这就是重复的内容。有些字符每个日期有5-7个条目,相同的日期(我检查过)。
我已经尝试了以下查询,以删除它们在过去曾出现过的类似问题。
DELETE n1 FROM experiencehistory n1, experiencehistory n2 WHERE n1.id > n2.id AND n1.date = n2.date AND n1.characterid = n2.characterid
藏汉作为
DELETE experiencehistory FROM experiencehistory
LEFT OUTER JOIN( SELECT MIN(ID)作为RowId的,或CharacterId,日期 FROM experiencehistory GROUP BY或CharacterId,日期 )作为KeepRows ON experiencehistory.id = KeepRows.RowId WHERE KeepRows.RowId IS NULL
两者都产生否导致控制台,并通过PHPMyadmin我得到这个错误;
Static analysis:
1 errors were found during analysis.
Unexpected token. (near "experiencehistory" at position 7)
什么我可以做任何建议,以解决这个还是我做错了什么这些方法我试过为主?
Serverversion:10.1.13-MariaDB的 - mariadb.org二进制分发
感谢任何见解!
我也很喜欢这个想法,但沿线地方我在我得到一个错误口角。尝试删除/添加父级,但无法完全弄清楚这个错误,也许你碰到过类似的东西? >>> #1064 - 你的SQL语法有错误;检查与你的MariaDB对应的手册服务器版本的正确语法使用附近的'来自experiencehistory组的字符,日期))'在第2行 >>在第一篇文章中还添加了服务器版本。 – Hultin
它在第一次运行更新后的文章时似乎工作得很好,除了它超时(我没有考虑到所涉及的表包含超过一百万行)。然而,第二次运行(在我将最大运行时间增加到24小时后),我得到了#1093 - 表'experiencehistory'被指定了两次,既作为'DELETE'的目标,也作为数据的单独来源 At首先我想,也许这是因为所有重复项都被删除了,但事实并非如此。真烦人! – Hultin
我已更新使用别名的答案.. – scaisEdge