Ruby on rails Group by或Select Distinct with Rails、ActiveRecord、Heroku和PostgreSQL

Ruby on rails Group by或Select Distinct with Rails、ActiveRecord、Heroku和PostgreSQL,ruby-on-rails,postgresql,heroku,Ruby On Rails,Postgresql,Heroku,我有一个记录表 用户:id、屏幕名称、tweet 我想通过screen\u名称返回用户和组的列表,这样列表中就不会有重复的screen\u名称 @users = User.all(:group => "screen_name") 这在使用MySQL时效果很好,但在我推到使用PostgreSQL的Heroku时就不行了 如何使用PostgreSQL获得类似的结果集? 这方面似乎有很多帖子,但我无法从评论中找到答案。除非screen\u name不是主键,否则您应该在组语句中添加或聚合所有列

我有一个记录表

用户:id、屏幕名称、tweet

我想通过screen\u名称返回用户和组的列表,这样列表中就不会有重复的screen\u名称

@users = User.all(:group => "screen_name")
这在使用MySQL时效果很好,但在我推到使用PostgreSQL的Heroku时就不行了

如何使用PostgreSQL获得类似的结果集?


这方面似乎有很多帖子,但我无法从评论中找到答案。

除非screen\u name不是主键,否则您应该在组语句中添加或聚合所有列。但看起来你无法聚合id或tweets)


您还可以规范化数据库。将屏幕名称放到另一个表中,您将能够轻松获得所需的数据

如果您真的想在postgres中获得类似mysql的分组结果,请参见
从a、b、c、d、e表中按a、b、c顺序选择不同的结果。我尝试了@users=User.all(:select=>“DISTINCT ON(screen\u name)screen\u name,tweet”,但日志显示错误“ActiveRecord::StatementInvalid(PGError:error:column id\u list.alias\u 0不存在”我尝试将所有字段添加到组@users=User.all(:select=>“screen\u name,tweet”,:group=>“screen\u name,tweet”但不幸的是,这似乎返回了所有记录(包括屏幕名称的副本)。如果可能,希望尝试并避免规范化
.group("id, screen_name, tweet")