我已经有一两天试图删除我的系统中出现的一些重复的数据库行,但是我已经尝试了大多数(如果不是全部)方法I&#到目前为止,已经能够在Stackoverflow上找到了。我之前在同一个mariadb和mysql上完成了其中几种方法的完美运行,因为我现在试图删除它们。
这是我的表结构。
ID |日期|经验|或CharacterId
ID是唯一标识符(也称为自动递增),每个字符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,date 来自经验史 GROUP BY characterid,date )作为KeepRows ON experiencehistory.id = KeepRows.RowId 哪里 KeepRows.RowId为空
两者都没有在控制台中产生任何结果,并且通过PHPMyadmin我得到了这个错误;
Static analysis:
1 errors were found during analysis.
Unexpected token. (near "experiencehistory" at position 7)
关于我可以做些什么来解决这个问题的建议,或者我是否主要尝试过这些方法的错误?
Serverversion:10.1.13-MariaDB - mariadb.org二进制分发
感谢任何见解!
答案 0 :(得分:1)
您可以尝试这种方式(删除所有id!= for min(id)group by characterid,date
DELETE FROM experiencehistory
where (id, characterid, date) not in
( select x_id, characterid , x_date from ( select min(x.id) as x_id
, x.characterid as x_characterid
, x.date as x_date
from experiencehistory as x group by x.characterid, x.date ) t );