首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL问题,挑战

SQL问题,挑战
EN

Stack Overflow用户
提问于 2009-12-16 04:47:03
回答 3查看 85关注 0票数 0

假设我们有两个实体:老师和学生。

每个老师都有多个学生。

现在我想:

查询最多5名教师,每名教师不超过10名学生。

到目前为止,可以很容易地做到这一点:

代码语言:javascript
运行
复制
select *,
(
select GROUP_CONCAT('<sid>',students.name,'</sid>') from students on 
teachers.id=students.teacher limit 10
) as students 
from teachers limit 5

但这还不是故事的全部。

如果教师中有10名以上的学生,则应为该教师返回true,否则为false

如何在SQL中做到这一点?

EN

Stack Overflow用户

回答已采纳

发布于 2009-12-16 05:12:05

伪SQL:为5名教师中的10名学生每人提供一行结果

代码语言:javascript
运行
复制
select t.teacher_id, s.student_id, 
    case when t2.count > 10 then 'true' else 'false' end
from
    (select top 5 * 
    from teachers 
    order by teacher_id) t 
join 
    (select top 10 * 
    from students s1 join teachers t1 on s1.teacher_id = t1.teacher_id 
    order by student_id) s 
on t.teacher_id = s.teacher_id
join
    (select teacher_id, count(*) as count 
    from teachers t join students s on t.teacher_id = s.teacher_id 
    group by teacher_id)  t2 
on t2.teacher_id = t.teacher_id
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1912362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档