Active Record、Rails、Postgres で複数の重複フィールドを持つ行を検索する 質問する

Active Record、Rails、Postgres で複数の重複フィールドを持つ行を検索する 質問する

Postgres と Activerecord を使用して、複数の列にわたって重複した値を持つレコードを見つける最適な方法は何ですか?

この解決策を見つけましたここ:

User.find(:all, :group => [:first, :email], :having => "count(*) > 1" )

しかし、postgres では動作しないようです。次のエラーが発生します:

PG::GroupingError: エラー: 列 "parts.id" は GROUP BY 句に出現するか、集計関数で使用される必要があります

ベストアンサー1

テスト済みおよび動作バージョン

User.select(:first,:email).group(:first,:email).having("count(*) > 1")

また、これは少し関係ありませんが便利です。それぞれの組み合わせが何回見つかったかを確認したい場合は、最後に .size を付けます。

User.select(:first,:email).group(:first,:email).having("count(*) > 1").size

次のような結果セットが返されます。

{[nil, nil]=>512,
 ["Joe", "[email protected]"]=>23,
 ["Jim", "[email protected]"]=>36,
 ["John", "[email protected]"]=>21}

かなりクールだと思ったけど、今まで見たことがなかった。

タリンに感謝します。これは彼女の答えを少し調整したバージョンです。

おすすめ記事