【发布时间】:2009-10-25 00:16:22
【问题描述】:
我正在尝试从使用 MySQL 转换为使用 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 吐出:“错误:列“stories.entity_id”必须出现在 GROUP BY 子句中或用于聚合函数中”
必须单独指定每个字段似乎不优雅。如果有人可以给我一个干净的方法来获得与 MySQL 相同的结果,而不必求助于获取重复字段(删除分组依据)或不必指定每个单独的字段以及 DISTINCT 子句,我将不胜感激!
谢谢!
【问题讨论】:
-
除 MySQL 之外,所有其他 db 都要求您指定所有未应用聚合函数的列以包含在
GROUP BY语句中。
标签: sql ruby-on-rails postgresql