Tôi có câu hỏi sau đây:Rails 3, ActiveRecord, PostgreSQL - ".uniq" lệnh không hoạt động?
Article.joins(:themes => [:users]).where(["articles.user_id != ?", current_user.id]).order("Random()").limit(15).uniq
và mang lại cho tôi những lỗi
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...
Khi tôi cập nhật các truy vấn ban đầu để
Article.joins(:themes => [:users]).where(["articles.user_id != ?", current_user.id]).order("Random()").limit(15)#.uniq
nên lỗi đã biến mất ... Trong MySQL .uniq hoạt động, trong PostgreSQL thì không. Tồn tại bất kỳ thay thế?
Bạn có chắc là truy vấn có 'uniq' trả về kết quả khác không? Vui lòng hiển thị các truy vấn SQL thực tế cho mỗi biến thể (sử dụng phương thức 'sql'). – taro
Tôi chắc chắn. Khi tôi sử dụng truy vấn này với cơ sở dữ liệu MySQL, vì vậy không có '.uniq' nó trả lại cho tôi cũng cùng một hàng, nhưng với' .uniq' luôn là hàng duy nhất. Trong PostgreSQL nếu tôi sử dụng '.uniq', tôi nhận được lỗi được chỉ định ở trên, nếu tôi không sử dụng' .uniq', vì vậy lỗi đã biến mất, nhưng tôi cũng nhận được các hàng tương tự từ DB. – user984621