【发布时间】:2012-01-30 14:47:21
【问题描述】:
我有一个名为 emaildata 的表,包含 4 列 emailaddress、domainname、data 和 id。
emailaddress 列应仅包含唯一条目,但有许多重复项。域名和数据列不是唯一的,因此将包含重复项,这很好。 id 列设置为自动增量,因此将只包含唯一值。
我的问题是如何删除所有具有重复电子邮件地址的行,保留 ID 最低的行?
应该有大约 370,000 行,但目前我有 906,000 行。
我有一个 SQL 语句,之前我曾用于类似的表,但我尝试对其进行调整但没有成功。
delete T1
from emaildata T1, emaildata T2
where T1.emailaddress = T2.emailaddress
and T1.id > T2.id
以上内容基于以下内容,该内容应用于另一个表并且工作正常。
delete T1
from email_list_subscribers T1, email_list_subscribers T2
where T1.emailaddress = T2.emailaddress
and T1.subscriberid > T2.subscriberid
我尝试在 phpmyadmin 的远程服务器上对我的表运行此程序,按下 GO 按钮后,加载栏出现在中间,然后消失,好像它正在处理一样 - 但它从来没有。
我尝试通过 phpmyadmin 对在我的家庭服务器 (XAMPP) 上运行的同一个表重复此操作,并再次使用 HeidiSQL - phpmyadmin 和 Heidi 出现相同的问题似乎崩溃了。
我已经尝试过我在这里看到的其他解决方案,但我似乎遇到了同样的“超时”/崩溃问题。我从来没有遇到过在远程服务器上运行的原始语句的问题,当然这是针对三分之一大小的数据库。
任何信息将不胜感激。
【问题讨论】:
标签: mysql sql phpmyadmin duplicate-removal