Mam następujące zapytanie:Rails 3, ActiveRecord, PostgreSQL - polecenie ".uniq" nie działa?
Article.joins(:themes => [:users]).where(["articles.user_id != ?", current_user.id]).order("Random()").limit(15).uniq
i daje mi błąd
PG::Error: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ...s"."user_id" WHERE (articles.user_id != 1) ORDER BY Random() L...
Kiedy zaktualizować oryginalny kwerendy
Article.joins(:themes => [:users]).where(["articles.user_id != ?", current_user.id]).order("Random()").limit(15)#.uniq
więc błąd nie ma ... W MySQL .uniq działa, w PostgreSQL nie. Czy istnieje jakaś alternatywa?
Czy na pewno zapytanie z 'unikq' zwraca inny wynik? Pokaż rzeczywiste zapytania SQL dla każdego wariantu (użyj metody 'sql'). – taro
Jestem pewien. Kiedy użyłem tego zapytania z bazą danych MySQL, więc bez '.uniq' zwrócił mi również ten sam wiersz, ale z' .uniq' zawsze unikalny wiersz. W PostgreSQL, jeśli używam '.uniq', otrzymuję błąd określony powyżej, jeśli nie używam' .uniq', więc błąd zniknął, ale otrzymuję również te same wiersze z DB. – user984621