我想从使用MySQL转换到使用PostgreSQL。我有这种类型的结构:如何最好地解决PostgreSQL的更严格的分组问题
用户(实体) - >按 - >企业(实体) - >故事
用户需要看到所有的新闻更新推出了由他们按照业务。以下查询对MySQL非常有用,因为它仅显示story.id中的所有关联故事和组。不幸的是,由于PostgreSQL在SQL标准的解释中更加直接,如果我想要执行GROUP BY子句,我需要使用DISTINCT子句分别询问每个字段。
Story.find(:all, :joins => { :entity => { :followers => :follower } }, :conditions => ['followers_follows.id = ?', 4], :group => 'stories.id')
PostgreSQL的吐出:“ERROR:列‘stories.entity_id’必须出现在GROUP BY子句或聚合函数中使用”
不必指定每个字段单独看起来不太优雅。如果任何人都可以给我一个干净的方式来获得与MySQL相同的结果,而不必诉诸重复的字段(删除组),或者必须指定每个单独的字段以及DISTINCT子句,我将不胜感激!
谢谢!
除了MySQL之外,其他每个数据库都要求你指定所有没有应用于它们的聚合函数的列,以包含在GROUP BY语句中。 – 2009-10-25 00:49:37