识别重复的电子邮件。在里面

时间:2016-02-03 07:06:20

标签: ruby-on-rails ruby postgresql

如何识别表格中的重复电子邮件。在铁轨上的红宝石里面

E.x。 user 1: testaccount@gmail.com,

  user 2: test.account@gmail.com,

  user 3: tes.t.account@gmail.com,

  user 4: test.a.ccount@gmail.com

Gmail为“。”所包含的每封电子邮件引用相同的电子邮件帐户。 。 Gmail会忽略电子邮件用户名中的点

2 个答案:

答案 0 :(得分:1)

postgesql中的

select distinct a from (select replace(adr,'.','') as a from t) t2;

为您提供独特的设置

select a,count(*) from (select replace(adr,'.','') as a from t) t2 group by a;

为您提供每个值达到的次数

http://sqlfiddle.com/#!15/e893a2/3

答案 1 :(得分:0)

点对点重复的电子邮件记录可以直接在您的SQL语句或ruby应用程序代码中识别。

这是一个简单的查询,用于返回所有规范化电子邮件以及与每个规范化电子邮件关联的用户数量:

User.group("replace(email,'.','')").count

转换为以下SQL:

SELECT COUNT(*) AS count_all, replace(email,'.','') AS replace_email FROM "users" GROUP BY replace(email,'.','')

并返回类似以下哈希的内容:

{"x@gmailcom"=>1, "da@gmailcom"=>2}

表示有2个标准化电子邮件用户等于da@gmailcom

另外,您可以在ruby代码中使用group_by

User.all.group_by{ |u| u.email.gsub('.','') }