Mysql Max查询

时间:2009-04-19 05:40:45

标签: mysql max

我有两张桌子:

teachers (teacher_id,teacher_name)
courses (teacher_id,course_id)

我需要显示教师的姓名,教授最多课程数量:

的MySQL>选择teachers.teacher_name,tmp1.teacher_id,tmp1.cnt from(select max(tm p.cnt)作为tmpMax来自(选择teacher_id,count(teacher_id)作为来自课程g的cnt roup by teacher_id)as tmp)as tmp2,(select teacher_id,count(teacher_id)as cnt 从teacher_id的课程组)到tmp1,教师在哪里tmp1.cnt = tmp2.tmpMax 和teachers.teacher_id = tmp1.teacher_id;

我想出了上面的查询。是否有更简单的查询此问题?

3 个答案:

答案 0 :(得分:1)

这应该有效:

select teacher_name
from teachers
where teacher_id IN
(
    select t.teacher_id
    from teachers t inner join courses c on t.teacher_id = c.teacher_id
    group by t.teacher_id
    having count(*) = 
    (
        select max(courses_per_teacher) from
        (
            select teacher_id, count(*) as courses_per_teacher
            from teachers t inner join courses c on t.teacher_id = c.teacher_id
            group by teacher_id
        )
    )
)

伪代码中的逻辑:

  • 找到ID在其中的教师姓名 - >
  • 课程数量为 - >的教师组。
  • 等于 - >的最大数量
  • 每位教师的课程数量列表

希望有所帮助。

答案 1 :(得分:-1)

SELECT teacher_id,teacher_name,COUNT(1)AS course_count
来自老师 WHERE course_count =(SELECT MAX(COUNT(1))FROM课程GROUP BY teacher_id)
GROUP BY teacher_id

答案 2 :(得分:-1)

试一试:

select a.teacher_name as 'Teacher', count(b.course_id) as 'Num of Courses'
from teachers a
inner join courses b on a.teacher_id = b.teacher_id
group by b.teacher_id
order by count(b.course_id) desc

修改的 以下内容将为您提供与查询完全相同的结果:

select a.teacher_name as 'Teacher', a.teacher_id as 'Teacher Id', count(b.course_id) as 'Num of Courses' 
from teachers a 
inner join courses b on a.teacher_id = b.teacher_id 
group by b.teacher_id 
order by count(b.course_id) desc 
limit 1