【问题标题】:Get duplicate records with group rails使用组轨获取重复记录
【发布时间】:2018-06-07 15:06:01
【问题描述】:

这是我的桌子StudyFieldOption。我想根据optionstudy_data_field_id 获取计数大于1 的所有重复记录。 即如果两个记录在optionstudy_data_field_id 中具有相同的值,则它们是重复的。

我正在尝试以下方法,但它不适合我:

StudyFieldOption.select([:option, :study_data_field_id]).group(:study_data_field_id).having("count(*) > 1")

【问题讨论】:

    标签: ruby-on-rails database postgresql


    【解决方案1】:

    group中可以使用多个列

    StudyFieldOption.select(:option, :study_data_field_id)
                    .group(:option, :study_data_field_id)
                    .having("count(*) > 1")
    

    【讨论】:

    • 您遇到什么错误??或者有什么问题?
    • LINE 1: ...tudy_data_field_id" HAVING count(*) > 1 ORDER BY "public"."...
    • 在公开前的报价标志上
    • StudyFieldOption.select(:option, :study_data_field_id).group(:option, :study_data_field_id).having("count(title) > 1").to_sql 它返回什么?
    【解决方案2】:

    您可以尝试以下方法:

    check = {}
    dup_indices = []
    StudyFieldOption.all.each do |field|
      unique_str = field.option + field.study_data_field_id.to_s
      if check.value?(unique_str)
        dup_indices << check.key(unique_str)
        dup_indices << field.id
      end
      check[field.id] = unique_str
    end
    puts dup_indices
    

    【讨论】:

    • 看看reduceeach_with_objectmap - 它们将有助于减少一些多余的代码,例如在@ 前面设置checkdup_indices 变量987654330@循环。
    • main:Object 的未定义方法 `str'
    • 哦抱歉 str 是 python,我已修复它,现在应该可以使用了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多