【发布时间】:2016-08-23 16:40:02
【问题描述】:
这个 rails/sql 代码...
@new_relationships = User.select('*')
.from("(#{@rels_unordered.to_sql}) AS rels_unordered")
.joins("
INNER JOIN relationships
ON rels_unordered.id = relationships.character_id
ORDER BY relationships.created_at DESC
")
产生一个这样开始的查询:
SELECT COUNT(*) FROM (SELECT .....
为什么要计算记录?我没有要求数。我只想选择加入后的所有列:
SELECT * FROM (SELECT .....
编辑
好的,看起来正在发生这种情况,因为我对@new_relationships 做的第一件事是
@new_relationships.any?
因为查询是延迟执行的,所以 .any?正在影响查询!我原以为 Rails 会执行查询,将所有记录放入@new_relationships,然后对它们进行计数。这是一个令人惊讶的功能。那么如何防止.any?影响查询?换句话说,我如何让查询按预期运行,然后计算结果?
【问题讨论】:
-
这是来自您的 Rails 控制台还是服务器日志的输出?
-
来自服务器日志。
-
在控制台试一试,请给我查询 SQL
-
有趣。它在控制台中的行为与预期的一样:SELECT * FROM (SELECT .....
标签: sql ruby-on-rails activerecord