我的数据库中有一个报告表。我正在执行一个复杂的查询,我想从结果中计算唯一的报告ID。
我可以用2种方式做到这一点:
我在mysql查询中使用DISTINCT
,如select count(DISTINCT id) from reports where ...
我对执行原始sql查询的结果使用了Rails uniq方法。
但这两个数字不同。
此外,当我使用LIMIT(n) with DISTINCT query (#1)
时,这两个计数都匹配。我不确定为什么会这样!我的表中此列没有NULL值。
这是mysql查询:
select count(distinct report_id)
from table1 cas
where not exists (select 1
from table2 t
where t.report_id = cas.report_id
and t.point_id = cas.point_id);
Rails查询:
ActiveRecord::Base.connection.execute("select report_id
from table1 cas
where not exists (select 1
from table2 t
where t.report_id = cas.report_id
and t.point_id = cas.point_id);").to_a.flatten.uniq.count
答案 0 :(得分:0)
由于您已经使用过原始sql,因此您可以使用它来完成整个任务
ActiveRecord::Base.connection.execute("select count (distinct report_id)
from table1 cas
where not exists (select 1
from table2 t
where t.report_id = cas.report_id
and t.point_id = cas.point_id);").first.count