繁体   English   中英

切换到PostgreSQL时Rails活动记录查询中断

[英]Rails Active Record Query Breaking When Switching To PostgreSQL

大家好,我收到此错误:

column "article_tags.id" must appear in the GROUP BY clause or be used in an aggregate function

当我使用以下查询切换到PostgreSQL时:

@article_tags = ArticleTag.includes(:tag, :article).where(is_deleted: [nil, false]).where('tags.is_deleted' => [nil, false], 'articles.is_deleted' => [nil, false], 'articles.category_id' => @category.id).group('tags.slug').order('tags.articles_count DESC')

我尝试通过仅选择相关记录来修复它,如下所示:

@article_tags = ArticleTag.includes(:tag, :article).where(is_deleted: [nil, false]).where('tags.is_deleted' => [nil, false], 'articles.is_deleted' => [nil, false], 'articles.category_id' => @category.id).select("tags.*").group('tags.slug').order('tags.articles_count DESC')

但是,将忽略特定的SELECT。

使用MySQL时,它从未中断过。 有人可以告诉我我在做什么错吗?

所以我相信我已经以合适的方式解决了我的问题。 基本上,我摆脱了包含和组。 相反,我使用联接并选择了不同的列。 如果有人遇到这些问题,以下是我的最终查询:

@article_tags = ArticleTag.select("DISTINCT (tags.slug), tags.articles_count").joins(:tag, :article).where(is_deleted: [nil, false]).where('tags.is_deleted' => [nil, false], 'articles.is_deleted' => [nil, false], 'articles.category_id' => @category.id).order('tags.articles_count DESC')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM