【问题标题】:Postgresql and rails with act-as-taggable-on errorPostgresql 和 rails 带有 act-as-taggable-on 错误
【发布时间】:2012-12-27 06:33:04
【问题描述】:

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

 questions=Question.select('questions.*,RANDOM()').tagged_with(tags,:any=>true).order("RANDOM()").limit(test.no_of_questions)

我正在使用 postgresql,但出现以下错误。

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

我不确定该怎么做,因为我认为 Distinct 部分是由标记 gem 插入的。

提前致谢!

【问题讨论】:

    标签: ruby-on-rails postgresql gem


    【解决方案1】:

    你可以这样做

    Question.tagged_with(tags,:any=>"true").order("RANDOM()").limit(limit_number)
    

    更新

    如图http://archives.postgresql.org/pgsql-sql/2010-10/msg00004.php

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

    显然,上述查询可以与其他数据库一起使用,但不能与 Postgresql 一起使用

    【讨论】:

    • 我收到以下错误。 PG::Error: ERROR: 对于 SELECT DISTINCT,ORDER BY 表达式必须出现在选择列表第 1 行中:... 1 OR quest_taggings_3b7ddc8.tag_id = 2) ORDER BY RANDOM() L... ^ : SELECT DISTINCT questions.* FROM “问题”加入标签 quest_taggings_3b7ddc8 ON quest_taggings_3b7ddc8.taggable_id = “questions”.id AND quest_taggings_3b7ddc8.taggable_type = '问题' WHERE (quest_taggings_3b7ddc8.tag_id = 1 OR quest_taggings_3b7ddc8.tag_id) LI MIT RAN2
    【解决方案2】:

    没关系,我找到了解决方案。

    我这样做了:

    questions=Question.tagged_with(tags,:any=>true)
      questions=questions.select('questions.*,RANDOM()').order("RANDOM()").limit(test.no_of_questions)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多