PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Encontre linhas com vários campos duplicados com Active Record, Rails e Postgres


Versão testada e funcional
User.select(:first,:email).group(:first,:email).having("count(*) > 1")

Além disso, isso é um pouco não relacionado, mas útil. Se você quiser ver quantas vezes cada combinação foi encontrada, coloque .size no final:
User.select(:first,:email).group(:first,:email).having("count(*) > 1").size

e você obterá um conjunto de resultados que se parece com isso:
{[nil, nil]=>512,
 ["Joe", "example@sqldat.com"]=>23,
 ["Jim", "example@sqldat.com"]=>36,
 ["John", "example@sqldat.com"]=>21}

Achei muito legal e não tinha visto antes.

Crédito para Taryn, esta é apenas uma versão aprimorada de sua resposta.