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天)机会。。。我没有注意到这个问题。。非常感谢。