gpt4 book ai didi

Mysql - 获取关系计数最低的行

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:43 25 4
gpt4 key购买 nike

我有两个 mysql 表:

  1. Teacher 包含列 id, name, age
  2. Student 包含 name, age, teacher_id 列,其中 teacher_id 是分配学生的老师的 ID。

现在,教师之间的负担应该平均分配。每次向系统添加新学生时,我都需要为它分配一个最不忙的老师,即分配给它的学生人数最少。

有没有真正快速的方法来做到这一点?最初,我认为我可以使用 group by teacher_id 并按计数对其进行排序以获取它。但是,这会排除尚未分配任何学生的教师。

如果我们使用连接,如果学生表有 100 万行,性能会如何?

最佳答案

您只需要一个外部联接来包括拥有零个学生的教师。

select t.id, t.name
from teacher t
left join student s on t.id = s.teacher_id
group by t.id
order by count(s.name)
limit 1

您可以使用非规范化(一个包含每个教师预先计算的学生人数的列),但是,这是一个坏习惯,如果不是真的不可避免,我不会推荐它。

关于Mysql - 获取关系计数最低的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48816406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com