ruby-on-rails - Where 子句按 "ANY"过滤 - 这是什么意思?

标签 ruby-on-rails ruby postgresql

我想了解为什么我在使用 postgresql 的 ruby​​ on rails 应用程序上没有收到任何记录。这是正在执行的 SQL 查询:

SELECT g.program_id, g.title, 
    COALESCE(COUNT(pr), 0) AS ac, g.default 
FROM groups AS g 
  LEFT OUTER JOIN memberships AS m ON m.group_id = g.id 
  LEFT OUTER JOIN progresses AS pr ON m.id = pr.participant_id 
                                  AND (pr.status = 'completed') 
WHERE g.program_id = ANY(@1)
GROUP BY g.id 
ORDER BY g.program_id, g.position, g.id

我的问题是:ANY(@1) 是什么意思?

请耐心等待,因为我是 ruby​​/rails/postgresql 新手。

谢谢!


更新:添加了一些附加代码。请不要标识下面的查询,因为上面已经标识了它。

class StatsComponents::CompletedActivitiesPerGroupStats
  include StatsComponent::Interface

  GROUP_ACTIVITIES = <<-SQL
  g.program_id, g.title, COALESCE(COUNT(pr), 0) AS ac, g.default
  FROM groups AS g
  LEFT OUTER JOIN memberships AS m ON m.group_id = g.id
  LEFT OUTER JOIN progresses AS pr ON m.id = pr.participant_id
  AND (pr.status = 'completed')
  WHERE g.program_id = ANY(@1)
  GROUP BY g.id
  ORDER BY g.program_id, g.position, g.id
  SQL

  def generate
  ...

最佳答案

它选择 g.program_id 的值存在于 @1 请求返回的数组中的记录,它们将其设置为查询参数(例如 SELECT...) 在程序的某个地方。

你同样可以在这里使用SOME(@1)


顺便说一下,这不是 sql 查询。虽然没有 sql.execute 或类似的东西,但它只是一个多行字符串赋值。

关于ruby-on-rails - Where 子句按 "ANY"过滤 - 这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30239110/

相关文章:

javascript - 表单字段中的 html 标记不起作用

ruby-on-rails - 在数组的前 X 个元素上调用 .map

ruby-on-rails - 从 mysqldump 文件重新加载 mysql 数据库并确保读取请求的完整性

ruby-on-rails - ActiveRecord 列表自定义范围

ruby-on-rails - Rails 控制台中的 Postgres 连接过多

sql - 在循环中使用 replace()

javascript - 获取 current_user 的总和,可通过 js.erb 部分访问

ruby-on-rails - 使用 pg_search 和 GIN 索引大型文档

ruby-on-rails - Carrierwave - 如果未上传图像,则保存 nil

html - 如何将自定义 HTML 文件集成到 Rails 文件中