Ruby 在ActiveRecord中使用uniq
运行这行代码Ruby 在ActiveRecord中使用uniq,ruby,activerecord,Ruby,Activerecord,运行这行代码 Activity.uniq.select(:ip).where("created_at > NOW() - INTERVAL 1 DAY").count 返回所有行数(不带唯一性筛选器),尽管SQL是正确的(使用DISTINCT关键字) 如果我分两步运行此命令: c = Activity.uniq.select(:ip).where("created_at > NOW() - INTERVAL 1 DAY") c.size 那我算对了 怎么可能呢 谢谢通常,DIST
Activity.uniq.select(:ip).where("created_at > NOW() - INTERVAL 1 DAY").count
返回所有行数(不带唯一性筛选器),尽管SQL是正确的(使用DISTINCT关键字)
如果我分两步运行此命令:
c = Activity.uniq.select(:ip).where("created_at > NOW() - INTERVAL 1 DAY")
c.size
那我算对了
怎么可能呢
谢谢通常,
DISTINCT
会从结果集中删除重复的结果,但不会进行任何分组。由于COUNT
结果中只有一行,因此不会看到任何效果。你真正想要的是:
SELECT COUNT(DISTINCT activities.ip) FROM activities WHERE ...
请注意,您需要的是不同活动的计数,而不是不同的计数
我不确定您将如何使用ActiveRecord发出此SQL。您可能需要直接使用ActiveRecord
连接
,并使用选择值
进行此类异常查询,除非您可以指导选择
。为第一个连接生成的SQL是什么?选择不同计数(活动
ip
)从活动
在何处(创建时间>现在()-间隔1天)机会。。。我没有注意到这个问题。。非常感谢。