Mysql 显示附加到它的最大值和ID号

Mysql 显示附加到它的最大值和ID号,mysql,Mysql,我正在mysql中使用聚合函数,但遇到了一个问题:我想获取列中的最大值,并将其与最大值附加到的ID号一起显示 所以,我有几个专栏。一个包含身份证号码,一个包含工作时间,一个包含募集资金(这是一个虚构志愿者组织的测试数据库)。基本上,我想带上自愿工作时间最多的人,并用ID号显示他们工作的小时数 我可以使用以下代码显示最大小时数: 从工时中选择最大(工时)作为“最活跃的” 然而,当我尝试添加一个函数来查找ID号时,我要么得到一个错误,要么得到一个我不想要的ID号(我知道这是我不想要的ID号,因为我事

我正在mysql中使用聚合函数,但遇到了一个问题:我想获取列中的最大值,并将其与最大值附加到的ID号一起显示

所以,我有几个专栏。一个包含身份证号码,一个包含工作时间,一个包含募集资金(这是一个虚构志愿者组织的测试数据库)。基本上,我想带上自愿工作时间最多的人,并用ID号显示他们工作的小时数

我可以使用以下代码显示最大小时数:

从工时中选择最大(工时)作为“最活跃的”

然而,当我尝试添加一个函数来查找ID号时,我要么得到一个错误,要么得到一个我不想要的ID号(我知道这是我不想要的ID号,因为我事先查看了表,知道哪个ID号是最长小时数的ID号)


如何使用它来修复错误?

如果您没有按任何字段分组,则可以通过按如下降序排序来选择最高的
工作小时数:

SELECT TOP 1 ID, HoursWorked FROM HoursWorked ORDER BY HoursWorked DESC

我的想法是分两步做

  • 找到最大值
  • 查找HoursWorked=最大值的行
这可以使用下面的语句和子查询来完成:

SELECT id, name, HoursWorked FROM HoursWorked where HoursWorked = (select max(HoursWorked) from HoursWorked);`
在子查询中,您使用聚合函数max()查找HoursWorked的最大值,然后在主查询中,您尝试查找HoursWorked值等于先前找到的最大值的所有行


通过这种方式,您可以确定两名或两名以上志愿者最活跃的情况(工作小时数相同)

这是否被视为一种聚合功能?这是一个类,我必须使用聚合函数(不是我想做的,但我想这样做,因为这是我说过的我可以在整个课程中使用数据库的事情之一)不,这不会被视为聚合。每个志愿者只有一个小时工作的条目吗?您可能需要SUM而不是MAX。@JacobH每个志愿者在HoursWorked列中有一个条目,当我只想显示MAX编号时,会弹出正确的条目。然而,如果它没有说明它属于谁,这在现实世界中是没有帮助的,这正是我想要做的。我尝试了类似的方法,但是我没有正确的语法。哦,学习的乐趣。谢谢:)