我正在尝试从数据库中删除所有重复项。我在这个网站上找到了以下代码。问题是它删除了我的整个数据库。可悲的是,我对MySQL的了解不足以说明它为什么要删除所有条目,而不仅仅是重复项。
DELETE FROM RosterPool AS t1
WHERE EXISTS (SELECT 1 from RosterPool t2
WHERE t1.Rate = t2.Rate
AND t1.FullName = t2.FullName
AND t1.Last4 = t2.Last4
AND t1.Graduated = t2.Graduated);
有没有办法将所有重复项移到另一个表中,只删除该表?
答案 0 :(得分:0)
SQL数据库中没有“移动”操作。只有插入,更新和删除。
如果你想安全地播放它,你可以将删除查询变成一个选择查询,看看如果你把它作为一个删除查询运行它会被确定什么,但是没有办法从一个表中“移动”一行到另一个,没有执行insert / select + delete操作序列。
答案 1 :(得分:0)
只需在要删除重复项的列上强制使用uniqe键。 为您编写的列速率添加唯一键:
ALTER TABLE RosterPool ADD UNIQUE (Rate);
如果你已经有重复的行会给你一个错误, 但是通过添加关键字IGNORE,您可以强制它添加uniqe并忽略警告
ALTER IGNORE TABLE RosterPool ADD UNIQUE (Rate);