首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有act-as-taggable-on错误的Postgresql和rails

具有act-as-taggable-on错误的Postgresql和rails
EN

Stack Overflow用户
提问于 2012-12-27 14:33:04
回答 2查看 270关注 0票数 0

我使用此语句从数据库中选择与特定标签集匹配的给定数量的随机记录。我正在使用act-as-taggable-on gem进行标记。

代码语言:javascript
复制
 questions=Question.select('questions.*,RANDOM()').tagged_with(tags,:any=>true).order("RANDOM()").limit(test.no_of_questions)

我正在使用postgresql,我得到了以下错误。

代码语言:javascript
复制
PG::Error: ERROR:  syntax error at or near "DISTINCT"
LINE 1: SELECT  questions.*,RANDOM(), DISTINCT questions.* FROM "que...
                                      ^
: SELECT  questions.*,RANDOM(), DISTINCT questions.* FROM "questions" JOIN taggings quest_taggings_14e6dd0  ON quest_taggings_14e6dd0.taggable_id = "questions".id AND quest_taggings_14e6dd0.taggable_type = 'Question' WHERE (quest_taggings_14e6dd0.tag_id = 1) ORDER BY RANDOM() LIMIT 3

我不确定该怎么做,因为我认为截然不同的部分是由标记宝石插入的。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2012-12-27 15:34:54

你可以按照下面的思路来做

代码语言:javascript
复制
Question.tagged_with(tags,:any=>"true").order("RANDOM()").limit(limit_number)

更新

如下所示,http://archives.postgresql.org/pgsql-sql/2010-10/msg00004.php

需要将DISTINCT和ORDER BY放在不同的查询级别中。

显然,上述查询适用于其他DB,但不适用于Postgresql

票数 1
EN

Stack Overflow用户

发布于 2012-12-27 18:25:21

不要紧,我已经找到了解决方案。

我这样做了:

代码语言:javascript
复制
questions=Question.tagged_with(tags,:any=>true)
  questions=questions.select('questions.*,RANDOM()').order("RANDOM()").limit(test.no_of_questions)

这样,questions.*就不会两次包含在select语句中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14050451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档