2016-06-21 72 views
-1

我有一個名爲Membership的類。使用同一封電子郵件可能會有多個記錄。要檢索電子郵件的所有成員的記錄,我創造的電子郵件的索引,這樣做的:通過電子郵件檢索多條記錄

Membership.where(email: "[email protected]") 

有多貴上面的操作?有沒有更有效的方法來做到這一點?

謝謝!

+0

這就是有效地做到這一點的方法。你們都準備好了! – 2016-06-21 18:17:46

+0

昂貴的是什麼?......它只是解決了原始SQL,而且它是你可以爲你想要的最直接的SQL命令。除非你有其他一些與電子郵件相同的屬性,這就是你所擁有的。 –

回答

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 

這會給收集與每封電子郵件以及這樣列出的副本數量:

{'[email protected]'=> 2,... etc}