我正在触发此查询
p "my query starts here..."
@relevant_customers_for_total_spent = Customer.order("total_amount DESC").where('id IN (?)',@customers_ids).limit(relevant_customers_count_for_total_spent)
p " ------- "
p relevant_customers_count_for_total_spent # output is: 1139
p @relevant_customers_for_total_spent.count # output is: 2888
p " ------- "
更多日志是说实际触发的查询是:
SELECT COUNT(*) FROM `customers` WHERE (id IN (2,3,4,5,6,75,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,75,296,297,298,2889)) LIMIT 1139
所以问题是:
- 为什么实际查询中没有order子句?
- 为什么@relevant_customers_for_total_spent.count 大于related_customers_count_for_total_spent。它应该等于或小于。
*更新-1 *
我得到了第二个问题:
@relevant_customers_for_total_spent.length
是计算元素数量的正确方法。
更新 - 2
我在数组中有一些客户 ID,例如 [2,3,4,5,6,75,56,57,58,59,60,61,62]。我在 Customer 模型中有一个属性,即 total_amount。我想按照 total_amount (DESC) 的顺序重新排列所有客户 ID。我还有一个指定限制的因素,即我需要从该列表中获得多少客户。一些事情,如果它是 5。所以我需要根据 total_amount 来自那个 araay 的前 5 名客户。