postgresql ActiveRecord上的WITH查询(postgres)

y53ybaqx  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(104)

Postgres对WITH queries有很好的支持。
我想知道我是否可以以某种方式在活动记录上使用WITH操作?
类似于:

User.with("user_sales as (select user_id, sum(amount) from sales)")
    .joins("LEFT JOIN user_sales on users.id = user_sales.user_id"

我知道没有WITH查询也可以实现同样的功能,但是没有它,查询通常会变得更加复杂。

3df52oht

3df52oht1#

ArelActiveRecord下面的引擎定义了几个有用的方法,包括WITH查询。

User.joins('...').tap do |relation|
  relation.arel.with(Sale.select('...').arel.as('user_sales'))
end

但是,请注意,Arel被官方认为是私有的api,可能会发生变化。
只要确保在.arel之前完成所有ActiveRecord操作即可

相关问题