PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Rails 3, ActiveRecord, PostgreSQL - Il comando .uniq non funziona?

Poiché l'errore indica for SELECT DISTINCT, ORDER BY expressions must appear in select list .Pertanto, devi selezionare esplicitamente per la clausola con cui stai ordinando.

Ecco un esempio, è simile al tuo caso ma generalizza un po'.

Article.select('articles.*, RANDOM()')
       .joins(:users)
       .where(:column => 'whatever')
       .order('Random()')
       .uniq
       .limit(15)

Quindi, includi esplicitamente il tuo ORDER BY clausola (in questo caso RANDOM() ) utilizzando .select() . Come mostrato sopra, affinché la tua query restituisca gli attributi dell'articolo, devi anche selezionarli esplicitamente.

Spero che aiuti; buona fortuna