Mysql的题,这个SQL有简单的写法吗?谢谢各位,在线结贴~~~

gopark 2020-10-19 12:58:19
Mysql的题,有两个表:
Student表
ID Name
1 Alex
2 Sam
3 Alex
4 Amy
5 Chris

backlog表
Student_ID Sub_ID
1 math
1 PE
2 math
2 CS
3 PE
4 Chinese

要查询出有课的学生名字,按字母排序,显示出两种方式均可
方式一:
Alex1
Alex3
Amy
Sam
方式二:
Alex
Alex
Amy
Sam

有啥简单的写法吗?谢谢各位,在线结贴~~~
...全文
185 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello World, 2020-10-20
  • 打赏
  • 举报
回复
select Name from student s where exists (select 1 from backlog b where b.Student_ID=s.ID)
天行归来 2020-10-19
  • 打赏
  • 举报
回复

SELECT b.name FROM backlog a inner join 
	 student b on a.Student_ID=b.id group by b.id order by b.name;
gopark 2020-10-19
  • 打赏
  • 举报
回复
一个是学生表,一个是学生排课表,现在要抓哪些同学有课。 如果没有重名的人,就很简单,distinct一下就可以,现在有重名的,重名的怎么正确抓出来,按要求要么同名的名字后再加个学号区分一下,如果不加学号也能抓出来重名的有课的学生也行
卖水果的net 版主 2020-10-19
  • 打赏
  • 举报
回复
说一下转的规则是什么 。
gopark 2020-10-19
  • 打赏
  • 举报
回复
这个不行吧,这样出来的Sam会有两行。这个问题的难点是,正常的同学不管有几门课,只要显示一行名字就行,而叫Alex的有两个人,重名了,学号不一样,这两个名字都要显示出来
chengangcsdn 2020-10-19
  • 打赏
  • 举报
回复
select b.name from backlog a inner join Student b on a.Student_ID = b.id order by b.name

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧