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

Rails 3, ActiveRecord, PostgreSQL - comando .uniq não funciona?


Como o erro indica for SELECT DISTINCT, ORDER BY expressions must appear in select list . Portanto, você deve selecionar explicitamente a cláusula pela qual está fazendo o pedido.

Aqui está um exemplo, é semelhante ao seu caso, mas generalize um pouco.
Article.select('articles.*, RANDOM()')
       .joins(:users)
       .where(:column => 'whatever')
       .order('Random()')
       .uniq
       .limit(15)

Portanto, inclua explicitamente seu ORDER BY cláusula (neste caso RANDOM() ) usando .select() . Conforme mostrado acima, para que sua consulta retorne os atributos do artigo, você também deve selecioná-los explicitamente.

Eu espero que isso ajude; boa sorte