我正在开发一个社交网络 Web 应用程序,我遇到了需要向尚未激活电子邮件的用户重新发送提醒电子邮件的情况。
问题是当我调查数据库时,我发现许多电子邮件是重复的(显然没有对电子邮件唯一性进行验证。所以我需要知道的是从数据库中检索这些字段的用户名、电子邮件激活码、电子邮件、这样我就可以重新发送激活电子邮件,对于重复的电子邮件,我只需要返回其中一个(即,如果我的用户 john 的电子邮件为 john@hotmail.com 和用户 john1 的电子邮件为 john@hotmail.com ,我只想检索这些 johns 中的一个,无论 john1 还是两个),所以我想通过(Group By Email)跟踪 SQL 查询。
问题是我无法选择不在 group by 子句中的其他字段。我在这里的解决方案是我不喜欢的;我创建了一个列表,每次需要向用户发送电子邮件时,我都会遍历整个列表以确保该电子邮件不存在,如果不存在,我发送给它,然后将电子邮件添加到列表。
类似于以下内容:
if(!EmailIsInList(email)){
SendActivationEmail(email);
AddEmailToList(email)
}
else { DoNotSend); }
实际上,我以这种方式解决了问题,但我仍然不喜欢我的解决方案。有任何想法吗?