Mysql 具有多个最大值的子句中的最大计数

Mysql 具有多个最大值的子句中的最大计数,mysql,sql,max,having,Mysql,Sql,Max,Having,表:uni(课程,符号)和其他一些列。。。 希望选择最大失败次数相同的所有课程 我的代码返回一个空集。这里有一个非常类似的问题,但答案没有涉及如果有多个具有相同最大值,如何获得最大值 选择课程,将(符号)计算为失败 来自大学 其中Symbol='F' 按课程分组,失败=最大(失败) 这是学习SQL的人经常犯的错误。在大多数数据库中,查询都会失败,因为您无法获取count()的max()。我很惊讶它能在MySQL中工作,但事实上它确实能工作(就是SQL小提琴) 在任何情况下,您都需要对此进行子查询

表:uni(课程,符号)和其他一些列。。。 希望选择最大失败次数相同的所有课程

我的代码返回一个空集。这里有一个非常类似的问题,但答案没有涉及如果有多个具有相同最大值,如何获得最大值

选择课程,将(符号)计算为失败 来自大学 其中Symbol='F'
按课程分组,失败=最大(失败)

这是学习SQL的人经常犯的错误。在大多数数据库中,查询都会失败,因为您无法获取
count()
max()
。我很惊讶它能在MySQL中工作,但事实上它确实能工作(就是SQL小提琴)

在任何情况下,您都需要对此进行子查询:

SELECT course, count(symbol) as fails
FROM uni
WHERE Symbol = 'F'
GROUP BY Course
HAVING fails = (SELECT max(fails)
                FROM (SELECT count(symbol) as fails
                      FROM uni
                      WHERE Symbol = 'F'
                      GROUP BY course
                     ) f
               );
不雅观,但应该管用。您还可以将
having
子句编写为:

HAVING fails = (SELECT count(symbol) as fails
                FROM uni
                WHERE Symbol = 'F'
                GROUP BY course
                ORDER BY fails DESC
                LIMIT 1
               )

顺便说一下,我对你的说法有些同情。SQL声称是一种描述性语言,程序员在其中描述输出,编译器找出执行查询的最佳方式。这个理想只是部分正确。

谢谢,终于实现了。我真的希望我不必使用子查询。你的第一个建议不太管用,是关于别名问题的。也许我做错了什么,正如你说的,我对sql还很陌生。但是第二个操作很好,但是需要将最大值的顺序改为desc。不过还是要谢谢你:)