2011-08-09 31 views
0

我试图从我的数据库中删除所有重复项。我在这个网站上找到了下面的代码。问题是它删除了我的整个数据库。令人遗憾的是,我对MySQL的了解不够多,不知道为什么它摆脱了所有条目,而不仅仅是重复。使用MS Access查找重复项并删除它们

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

我正在使用MS Access和数据库查询使用MySQL语言。 – Navybofus

回答

0

在SQL数据库中没有“移动”操作。只有插入,更新和删除。

如果您想要安全地玩它,您可以将删除查询转换为选择查询,以查看如果将其作为删除查询运行,但是没有办法从一个“移动”一行表到另一个,而不需要执行插入/选择+删除操作序列。

0

只需在要删除重复项的列上强制使用uniqe项。 添加列率的唯一密钥你写:

ALTER TABLE RosterPool ADD UNIQUE (Rate); 

是要给你一个错误,如果你已经有重复的行, 但通过添加关键字忽略,您可以强制其加入潮头和忽略警告

ALTER IGNORE TABLE RosterPool ADD UNIQUE (Rate); 
+0

感谢您的提示。现在...我要玩这个来尝试在检查中添加另一列,因为真正唯一的方法是检查LastNames和Last4是否与其他条目LastNames和Last4匹配 – Navybofus

+0

你可以有更多的一列:“ALTER IGNORE TABLE RosterPool AD​​D UNIQUE(Rate,FullName(100),Last4,Graduated)”,注意你必须在文本列上指定长度 –