PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Trouvez des lignes avec plusieurs champs en double avec Active Record, Rails et Postgres

Version testée et fonctionnelle

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

De plus, c'est un peu sans rapport mais pratique. Si vous voulez voir combien de fois chaque combinaison a été trouvée, mettez .size à la fin :

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

et vous obtiendrez un ensemble de résultats qui ressemble à ceci :

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

J'ai trouvé ça plutôt cool et je ne l'avais jamais vu auparavant.

Merci à Taryn, ce n'est qu'une version modifiée de sa réponse.