如何在MySQL中查询不包含任何其他成员的集合?

Jus*_* T. 6 mysql sql select join difference

我想回复一个在一个部门上课而不在另一个部门上课的学生名单.这是我的查询,由于某种原因,结果显示为空白.

 SELECT *
 FROM student
 JOIN transcript
    ON student.id = transcript.studID
 JOIN course
    ON transcript.crsCode = course.crsCode
 WHERE deptId = "CSCI" NOT IN
      (
        SELECT student.name
        FROM student
        JOIN transcript
          ON student.id = transcript.studID
        JOIN course
          ON transcript.crsCode = course.crsCode
        WHERE deptId = "MATH"
);
Run Code Online (Sandbox Code Playgroud)

这是表格的样子:

 Student (id, name, address, status)
 Transcript (studId, crsCode, semester, grade)
 Courses (crsCode, deptId, crsName, descr)
Run Code Online (Sandbox Code Playgroud)

Nik*_*tra 2

要检查两个条件,您需要AND在查询中添加子句,并在子查询中检查student.nameis :NOT IN

 SELECT *
 FROM student
 JOIN transcript
    ON student.id = transcript.studID
 JOIN course
    ON transcript.crsCode = course.crsCode
 WHERE deptId = "CSCI" AND student.name NOT IN
      (
        SELECT student.name
        FROM student
        JOIN transcript
          ON student.id = transcript.studID
        JOIN course
          ON transcript.crsCode = course.crsCode
        WHERE deptId = "MATH"
);
Run Code Online (Sandbox Code Playgroud)