Arel (Rails) 是否可以进行复杂的查询?
Arel (Rails) Is it possible to make complex query?
我需要使用 ANY/ALL
创建对数据库的查询。在研究 Arel 的可能性后,我发现 Arel 没有任何短命令(如 eq
、lt
、gt
等),但它只有一个 Arel::SqlLiteral
例子。对我来说,我如何使用这样的经典查询并不是那么明显:
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);
而不是示例中的查询。有人可以告诉我它应该是什么样子吗?
您可以使用 ActiveRecord 方法来完成,而无需使用 Arel:
sub_query = Model.select(:column_name).where(condition).to_sql
Model.
select("column_name(s)").
where("column_name operator ALL (#{sub_query})")
我需要使用 ANY/ALL
创建对数据库的查询。在研究 Arel 的可能性后,我发现 Arel 没有任何短命令(如 eq
、lt
、gt
等),但它只有一个 Arel::SqlLiteral
例子。对我来说,我如何使用这样的经典查询并不是那么明显:
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);
而不是示例中的查询。有人可以告诉我它应该是什么样子吗?
您可以使用 ActiveRecord 方法来完成,而无需使用 Arel:
sub_query = Model.select(:column_name).where(condition).to_sql
Model.
select("column_name(s)").
where("column_name operator ALL (#{sub_query})")