【问题标题】:How to build a list of unique values and display an array of their ids?如何构建唯一值列表并显示其 id 数组?
【发布时间】:2016-11-18 19:16:59
【问题描述】:

此代码是我试图实现的概念的简化版本。实际上,我正在处理一个有点复杂的查询的结果——但我认为这个简单的例子就足够了。

我正在尝试输出一个有序的唯一值列表及其 id 数组。我不确定是否需要使用一个或两个 select 语句,或者是否应该使用一个 select 语句和一些 ruby​​ 代码。

数据(人)

id: first: last:
1   Julie  Brown
2   Julie  Brown
3   Mike   Smith
4   Julie  Brown
5   Andrea Smith
6   Mike   Smith
7   Jim    Brown

期望的输出

Jim Brown (7)
Julie Brown (1, 2, 4)
Andrea Smith (5)
Mike Smith (3, 6)

【问题讨论】:

    标签: sql ruby-on-rails postgresql ruby-on-rails-4


    【解决方案1】:
    @people = Person
      .select(:first, :last, "array_agg(id) AS ids")
      .group(:first, :last)
    

    您可以使用 array_agg 函数在单个查询中获取所有 ID。

    @people.each do |person|
      full_name = [person.first, person.last].join(" ")
      puts "#{ full_name } (#{ person.ids.join(", ") })"
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      相关资源
      最近更新 更多