我只需要从数据库中删除重复的用户信息。我的 c# 代码如下,但我只是想知道如何在 SQL 中实现这一点,而不是使用游标。我认为诀窍始于获取由电子邮件分隔的整个重复数据集的第一行或剩余行。
在 C# 中,我以 1000 封为一组收集重复的电子邮件,并在跳过第一封后删除剩余的行。
List<string> top1000_emails;
do
{
top1000_emails = sql.dbCommand.GetFirstColumn<string>(@"select top 1000 email
from UserBase
group by email
having COUNT(email) > 1");
for (int i = 0; i < top1000_emails.Count; i++)
{
var tmpids = sql.dbCommand.GetFirstColumn<long>("select [Id] from UserBase where email = {0}", top1000_emails[i]).Skip(1);
sql.dbCommand.DeleteByIds<UserBase>(tmpids);
}
} while (top1000_emails.Count > 0);