通过电子邮件检索多个记录

时间:2016-06-21 18:04:08

标签: ruby-on-rails ruby-on-rails-4

我有一个名为Membership的课程。可能有多条记录使用相同的电子邮件。要通过电子邮件检索所有会员记录,我正在创建电子邮件索引并执行:

Membership.where(email: "example@example.com")

上述操作有多贵?有没有更有效的方法呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为最有效的方法是使用这样的群组查询:

Membership.select(:email).group(:email).having("count(*) > 1")

这将生成以下查询

SELECT "memberships"."email" FROM "memberships" GROUP BY "memberships"."email" HAVING (count(*) > 1)

这应该适用于PG和MySQL。

希望有所帮助

修改

如果你想看到重复,你可以这样做(在最后加上一个计数)

Membership.select(:email).group(:email).having("count(*) > 1").count

这将为每个电子邮件和重复数量的集合提供如下所示:

{'some@duplicate.com'=> 2,......等}