PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Rails 3, ActiveRecord, PostgreSQL - .uniq-Befehl funktioniert nicht?

Da der Fehler for SELECT DISTINCT, ORDER BY expressions must appear in select list erscheinen .Daher müssen Sie explizit die Klausel auswählen, nach der Sie bestellen.

Hier ist ein Beispiel, es ähnelt Ihrem Fall, aber etwas verallgemeinern.

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

Fügen Sie also explizit Ihren ORDER BY hinzu -Klausel (in diesem Fall RANDOM()). ) mit .select() . Wie oben gezeigt, müssen Sie diese ebenfalls explizit auswählen, damit Ihre Abfrage die Artikelattribute zurückgibt.

Ich hoffe das hilft; Viel Glück