2021-08-18 MySQL查询练习

本文探讨了如何利用SQL查询未完成所有课程的学生信息,查找至少有一门课与特定学生相同课程的同学,以及完全匹配指定学生课程的其他同学。同时,也展示了如何查询未学过特定教师授课课程的学生名单。这些SQL查询对于理解和分析学生学习进度及教师授课覆盖范围具有重要意义。
摘要由CSDN通过智能技术生成
  1. 查询没有学全所有课程的同学的信息
SELECT student.* 
FROM score 
JOIN student
ON student.`s_id` = score.`s_id`
GROUP BY score.s_id
HAVING COUNT(score.s_id) != (
	SELECT COUNT(1) 
	FROM Course
)
  1. 查询⾄少有⼀⻔课与学号为"01"的同学所学相同的同学的信息
SELECT * 
FROM score 
WHERE s_id != '01'
GROUP BY s_id
HAVING c_id IN 
	(SELECT c_id 
	FROM score 
	WHERE s_id = '01')
  1. 查询和"01"号的同学学习的课程完全相同的其他同学的信息
SELECT stu.* 
FROM Score s1
JOIN Score s2
JOIN Student stu
WHERE s1.s_id = '01' AND s2.s_id!='01' AND s1.`c_id` = s2.`c_id` AND stu.`s_id` = s2.`s_id`
GROUP BY s2.`s_id`
HAVING COUNT(1)=(
	SELECT COUNT(1) FROM score WHERE s_id = '01'
)
  1. 查询没学过"张三"⽼师讲授的任⼀⻔课程的学⽣姓名
SELECT * 
FROM Score
JOIN (SELECT Course.`c_id` 
	FROM teacher
	JOIN Course
	ON Course.`t_id` = Teacher.`t_id`
	WHERE t_name = '张三' ) temp
ON temp.c_id = Score.`c_id`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值