我有一个数据库,可以总结如下:
teacher (tid, f_name, l_name);
subject (sid, title);
teacher_subject (tid, sid);
我想要的是让教授最多科目的老师,我在这里看到了一些类似但不重复的问题,并且无法修补解决方案以达到我想要的,这就是我所拥有的写:
select max(num_subs) from
(select t.f_name, t.l_name, count(t.tid) num_subs
from teacher t
join teacher_subject ts
on t.tid = ts.tid
group by t.tid)
max_subs;
但无法更进一步。我确信有办法到达它,因为我有时离它太近但从未达到。
最佳答案
这在 MySQL 中有点尴尬,因为缺少窗口函数或允许连接的限制子句,但你可以这样做:
select *
from teacher
where tid in
(
select tid
from teacher_subject
group by tid
having count(*) =
(
select count(*)
from teacher_subject
group by tid
order by count(*) desc
limit 1
)
);
仅供记录,在标准 SQL 中这仅仅是:
select *
from teacher t
order by (select count(*) from teacher_subject ts where ts.tid = t.tid) desc
fetch first 1 row with ties;
关于mysql - 选择具有最大值的行(值由连接生成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49761457/