我想了解为什么我在使用 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/