-1
我有一個名爲Membership的類。使用同一封電子郵件可能會有多個記錄。要檢索電子郵件的所有成員的記錄,我創造的電子郵件的索引,這樣做的:通過電子郵件檢索多條記錄
Membership.where(email: "[email protected]")
有多貴上面的操作?有沒有更有效的方法來做到這一點?
謝謝!
我有一個名爲Membership的類。使用同一封電子郵件可能會有多個記錄。要檢索電子郵件的所有成員的記錄,我創造的電子郵件的索引,這樣做的:通過電子郵件檢索多條記錄
Membership.where(email: "[email protected]")
有多貴上面的操作?有沒有更有效的方法來做到這一點?
謝謝!
我認爲最有效的方式是這樣的組查詢:
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}
這就是有效地做到這一點的方法。你們都準備好了! – 2016-06-21 18:17:46
昂貴的是什麼?......它只是解決了原始SQL,而且它是你可以爲你想要的最直接的SQL命令。除非你有其他一些與電子郵件相同的屬性,這就是你所擁有的。 –