Tengo siguiente consulta:Rails 3, ActiveRecord, PostgreSQL - ¿El comando ".uniq" no funciona?
Article.joins(:themes => [:users]).where(["articles.user_id != ?", current_user.id]).order("Random()").limit(15).uniq
y me da el error
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...
Cuando actualizo la consulta original a
Article.joins(:themes => [:users]).where(["articles.user_id != ?", current_user.id]).order("Random()").limit(15)#.uniq
por lo que el error se ha ido ... En MySQL .uniq funciona, en PostgreSQL no. Existe alguna alternativa?
¿Estás seguro de que la consulta con 'uniq' arroja resultados diferentes? Por favor, muestre consultas SQL reales para cada variante (use el método 'sql'). – taro
Estoy seguro. Cuando utilicé esta consulta con la base de datos MySQL, entonces sin '.uniq' me devolvió también la misma fila, pero con' .uniq' siempre una única fila. En PostgreSQL si uso '.uniq', obtengo el error especificado arriba, si no uso' .uniq', entonces el error se ha ido, pero también estoy obteniendo las mismas filas de DB. – user984621