【发布时间】:2019-10-30 16:20:15
【问题描述】:
我在 rails 中有一个简单的 select().where() 语句,它返回以“SELECT COUNT(...”开头的 SQL,我不知道 COUNT 来自哪里,也不想要它。
我进行了很多谷歌搜索,但由于 COUNT 是一个如此流行的术语,我无法找到任何相关的答案。
这是执行此操作的代码:
@properties = Property.select("property.*").where("(address1 LIKE '%528 Alameda%')")
这是我得到的(从网页上的错误消息中复制):
SELECT COUNT(property.*) FROM `property` WHERE ((address1 LIKE '%528 Alameda%'))
这是我所期望的:
SELECT property.* FROM `property` WHERE ((address1 LIKE '%528 Alameda%'))
为什么要添加 COUNT() 以及如何摆脱它?谢谢!
编辑
原来我找错地方了。它与这段代码没有直接关系:
@properties = Property.select("property.*").where("(address1 LIKE '%528 Alameda%')")
相反,稍后在代码中,我调用了正在生成 SQL 的 @properties.count
SELECT COUNT(property.*) FROM `property` WHERE ((address1 LIKE '%528 Alameda%'))
崩溃了。问题是:那个 SQL 有什么问题?
【问题讨论】:
-
你能试试看
Property.unscoped { Property.select("property.*").where("(address1 LIKE '%528 Alameda%')") }是否返回相同的结果? -
可能值得将 Property 模型添加到您的问题中。另外,您使用 arel 得到相同的结果吗?
Property.where(Property.arel_table[:address1].matches('%528 Alameda%')) -
您是否使用任何类型的分页?大多数分页库都会运行计数以确定总结果和每页计数的页数
-
您可以添加属性模型以便我们为您提供帮助吗?
-
这个问题中的代码无法解释这一点。我猜它的分页像@engineersmnky 暗示,或者你在视图中做一些导致计数查询的事情。你必须做更多的工作来追踪它。
标签: ruby-on-rails activerecord