データベースから繰り返しユーザー情報を削除する必要があります。私の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);