mysql查询和“01”号同学所学课程完全相同的其他同学的学号
封面图
•
2025-12-10
•
MySQL
212
0
0
0
要查询与“01”号同学所学课程**完全相同**的其他同学的学号,我们可以假设你有一个如下结构的数据库表: ### 表结构示例(假设): - `student_course` 表,包含字段: - `student_id`:学生学号 - `course_id`:课程编号 --- ### 查询目标: 找出所有与 `student_id = '01'` 所选课程 **完全一致** 的其他学生。 --- ### SQL 查询语句如下: ```sql SELECT DISTINCT sc.student_id FROM student_course sc WHERE sc.student_id != '01' AND NOT EXISTS ( SELECT 1 FROM student_course sc2 WHERE sc2.student_id = '01' AND NOT EXISTS ( SELECT 1 FROM student_course sc3 WHERE sc3.student_id = sc.student_id AND sc3.course_id = sc2.course_id ) ) AND NOT EXISTS ( SELECT 1 FROM student_course sc4 WHERE sc4.student_id = sc.student_id AND NOT EXISTS ( SELECT 1 FROM student_course sc5 WHERE sc5.student_id = '01' AND sc5.course_id = sc4.course_id ) ); ``` --- ### 解释: 这个查询使用了 **双重 NOT EXISTS** 来确保两个学生的课程集合是**完全相等**的: 1. 第一个 `NOT EXISTS` 确保 `student_id = '01'` 的所有课程都出现在当前学生中。 2. 第二个 `NOT EXISTS` 确保当前学生的所有课程也都在 `student_id = '01'` 中。 --- ### 示例说明: 假设有以下数据: | student_id | course_id | |------------|-----------| | 01 | C001 | | 01 | C002 | | 02 | C001 | | 02 | C002 | | 03 | C001 | | 03 | C003 | 那么,查询结果将是:`02`(因为只有他和 01 选了相同的课程)。 --- 如果你有具体的表结构或数据,我可以帮你进一步优化查询。
上一篇:
mysql查询所有课程成绩小于60分的学生的学号、姓名
下一篇:
centos定时备份mysql数据库并删除过期的(自己设定)备份
标题录入,一次不能超过6条
留言
评论