【发布时间】:2021-10-22 15:36:46
【问题描述】:
所以我想把这个 SQL 查询翻译成 Rails(并且按照这个确切的顺序): 假设我有
WITH sub_table as (
SELECT * FROM main_table LIMIT 10 OFFSET 100 ORDER BY id
)
SELECT * FROM sub_table INNER JOIN other_table
ON sub_table.id = other_table.other_id
这里的重点是执行顺序必须是:
- 必须首先执行
sub_table查询中的 LIMIT 和 OFFSET - 第二个语句应该发生在之后。
所以如果我的关系被称为 OtherTable 和 MainTable 做这样的工作:
subTableRelation = MainTable.order(id: :asc).limit(10).offset(100)
subTableRelation.join(OtherTable, ....)
这里的主要问题是 Rails 关系执行顺序如何影响事物。
【问题讨论】:
-
您还可以考虑
select_all,它可以让您充分利用SQL。
标签: ruby-on-rails arel