我有一个Summary表(data_summary)和一个Summary Details表(data_summary_dtl)。我在data_summary_dtl表中应用以下查询来获取
摘要中每条记录的详细信息表中的记录数 表,如果count大于2,则选择数据
select summary_gid,COUNT(summary_gid) as varCount
from data_summary_dtl
group by summary_gid;
我可以使用以下查询
列出summary_id和计数这给了我很好的结果,现在我的问题是如何获得计数大于2
的记录的结果。
我曾尝试以下方法,但没有按预期得到结果:
select summary_gid,COUNT(summary_gid) as varCount
from data_summary_dtl
where varCount > 2
group by summary_gid;
select summary_gid,COUNT(summary_gid) as varCount
from data_summary_dtl
where COUNT(summary_gid) > 2
group by summary_gid;
还有其他可能获得结果吗?
答案 0 :(得分:2)
请使用此查询
select summary_gid,COUNT(summary_gid) as varCount
from data_summary_dtl
group by summary_gid
having COUNT(summary_gid)> 2
Having
在应用GROUP BY
后限制选择列表,并在查询语法中使用后再使用。
在WHERE
之前使用GROUP BY
并在GROUP BY
中进行分组之前限制选择列表,因此依赖COUNT()
的{{1}}等汇总函数不会产生结果< / p>
关于您的疑问:
GROUP BY
这里的错误是
列名称varCount
无效
因为您无法使用select summary_gid,COUNT(summary_gid) as varCount from data_summary_dtl
where varCount > 2 group by summary_gid;
或SELECT
,WHERE
或GROUP BY
条件中ORDER
列表中定义的别名。
在第二个查询中
HAVING
您将收到有关
的错误消息在
中使用聚合函数select summary_gid,COUNT(summary_gid) as varCount from data_summary_dtl where COUNT(summary_gid) > 2 group by summary_gid;
子句COUNT
请注意,在WHERE
语法中使用WHERE
是完全可以的。例如,如果您想查看有关大于10且小于15的GROUP BY
的详细信息,那么您可以使用
summary_gid
你也可以使用select summary_gid,COUNT(summary_gid) as varCount from data_summary_dtl
where summary_gid > 10 AND summary_gid > 20 group by summary_gid;
和WHERE
HAVING
这样
GROUP BY
答案 1 :(得分:0)
使用having
子句和group by
:
select summary_gid,COUNT(summary_gid) as varCount
from data_summary_dtl
group by summary_gid
having COUNT(summary_gid) > 2
我们不能将WHERE
与聚合函数一起使用。那是HAVING
条款来帮助的时候。