带和不带HAVING子句的MySQL计数

带和不带HAVING子句的MySQL计数,mysql,Mysql,我需要知道一个查询的计数,以及使用HAVING子句的同一个查询的计数 作为说明(不是真实情况,而是说明性的),如果表pupilTable包含一个小学生及其班级的列表,我想知道班级的数量,以及超过25个孩子的班级数量: 我知道我可以通过以下方式获得课程总数: SELECT COUNT( * ) AS NumAllClasses FROM pupilTable GROUP BY class 我知道我可以使用以下条件获得大类的数量: SELECT COUNT( * ) AS NumBigClasse

我需要知道一个查询的计数,以及使用HAVING子句的同一个查询的计数

作为说明(不是真实情况,而是说明性的),如果表pupilTable包含一个小学生及其班级的列表,我想知道班级的数量,以及超过25个孩子的班级数量:

我知道我可以通过以下方式获得课程总数:

SELECT COUNT( * ) AS NumAllClasses FROM pupilTable GROUP BY class
我知道我可以使用以下条件获得大类的数量:

SELECT COUNT( * ) AS NumBigClasses FROM pupilTable GROUP BY class HAVING COUNT(pupil) > 25
是否有一种简单(单一查询)的方法可以同时获取这两种信息?谷歌不是我的朋友:(


编辑以添加说明性数据,无需任何验证:

SELECT COUNT(*) AS count1 FROM table WHERE condition UNION ALL
SELECT COUNT(*) AS count2 FROM table WHERE condition HAVING second-condition

但请注意,我猜第二个标签将丢失,因此您将在标签count1下返回两个count NR。您可以使用以下查询:

    select count(users.id) count1, count(u.id) count2 from users left join users u on users.id = u.id and u.fname = "abc" where users.id > 10
这里,我使用了两个条件。您需要在这个查询中进行相关更改,以获得所需的输出

这里,user.和u.是条件

在上面的查询中

user.<condition1> : u.fname = "abc"
u.<condition2> : users.id > 10
用户:u.fname=“abc”
u、 :users.id>10

我认为需要两个查询。也许可以在一个SELECT语句中解决这个问题。但是,请尝试提供示例数据和您的预期输出以确认这一点。七年后,这是第一次投票,没有任何评论或回答。谢谢!
UNION ALL
将是解决方案。@Antoniosss您是B完全正确,否则UNION将排除两个查询返回相同数量的已计数行的情况。