首页 > 解决方案 > MYSQL 按 id 打印名称,在不同表中出现次数最多

问题描述

我需要写一个查询,列出监督最多学生的工作人员的姓名。结果还应显示学生人数。查询也应该在不止一名主管有最高学生的情况下工作(例如,两名主管每人有 10 名学生,10 名学生最高)。

我读过的关于获取最常见值的每一篇关于 stackoverflow 的文章都在讨论仅按出现频率列出值,然后使用 LIMIT 仅显示最常见的值。但是,我需要以这样的方式进行操作,即它会显示最高的一个和任何其他与之相等的,并且对于任何长度的结果列表,它必须是动态的。

有 2 个单独的表,如下所示,所以我认为查询类似于

学生表

+------------------+----------+
|  S_FIRST         |   F_ID   |
+------------------+----------+
| Tammy            |        1 |
| jorge            |        1 |
| john             |        1 |
| mike             |        2 |
| lisa             |        4 |
| ni               |        3 |

教师表

+------------------+----------+
| F_FIRST          |   F_ID   |
+------------------+----------+
| Teresa           |        1 |
| mark             |        2 |
| colin            |        3 |
| jonnel           |        4 |
| james            |        5 |

SELECT F_FIRST, COUNT(student.F_ID) AS value_occurrence
from teacher, student group by F_FIRST ORDER BY value_occurrence DESC;

但这只是给出了以下输出。

F_FIRST         VALUE_OCCURRENCE
--------------- ----------------
Jonnel                         6
Mark                           6
James                          6
Colin                          6
Teresa                         6

预期的输出是

F_FIRST         VALUE_OCCURRENCE
--------------- ----------------
Teresa                         3

标签: mysqlsql

解决方案


推荐阅读