我只需要从数据库中删除重复的用户信息。我的C#代码如下,但我只是想知道如何在SQL中实现而不使用游标。我认为这个诀窍从获取由电子邮件分隔的整个重复数据集的第一行或其余行开始。删除重复数据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);
因此,您的观点是保留一个截然不同的电子邮件记录并删除任何其他重复记录?它可以在SQL查询中完成,我不认为你需要那个C#代码。 – 2012-07-12 09:42:49
准确地说,我只需要保留不同的电子邮件并删除其他重复。那么我怎么能在没有光标的sql中执行操作。因为如果我使用了光标,它将与我的c#代码相同 – 2012-07-12 09:46:30
表中是否有任何唯一标识? – Kashif 2012-07-12 09:58:02