mysql查询以查找具有班级组合的学生[重复]

Posted

技术标签:

【中文标题】mysql查询以查找具有班级组合的学生[重复]【英文标题】:mysql query to find students with combinations of classes [duplicate] 【发布时间】:2015-06-11 20:29:06 【问题描述】:

我有一张有 2 个字段的表格。 Student_id 和 Course_id 一个特定的 Student_ID 可以参加多门课程,例如,学生 2 在下面的示例中参加课程 101 和 102,但学生 1 只参加 102

student_id  course_id
1             102
2             101
2             102
3             303

如何查询正在学习 101 和 102 课程的学生?还是考了102但没考101的学生?

对于各位专家来说可能是一个新手问题......

【问题讨论】:

【参考方案1】:

这个可能吗?

Select * from tablename where (course_id = 101) OR (course_id = 102);

检查一个在 101 而不是 102 的人

select * from tablename 
      where (course_id = 101) and 
            (student_Id not in 
                 (select Student_ID from tablename 
                                where course_id =102));

检查是否有人在两者中:

select * from tablename 
          where (course_id = 101) and 
                (student_Id in 
                     (select student_Id from tablename 
                                    where course_id =102));

SQL fiddle

【讨论】:

这将返回 101 或 102 中的所有学生。他要求两者中的学生,以及其中一个或另一个中的学生... @JesseShellabager 编辑添加答案 我认为这行不通。目标是返回 student_id 2 以查询正在学习 course_id 101 和 102 的学生。我在 [link] sqlfiddle.com/#!9/0223b7/24 上运行它,它返回的操作数应包含 1 列 @NandanDas 它可以工作,我编辑了它,工作正常。 酷...谢谢.. 它确实有效。

以上是关于mysql查询以查找具有班级组合的学生[重复]的主要内容,如果未能解决你的问题,请参考以下文章

1. 从表Student中检索学生所在班级号,并消除重复行。 2. 查询课程名称中含有“技术”两个字的课程的全名

用sql语句,查询每个班级成绩排名前三名的学生姓名

用sql语句,查询每个班级成绩排名前三名的学生姓名

SQL Server讲课笔记02:查询与统计数据

如何查询学生表student中不同的班级class

SQL多个表联合查询优化的问题