Php Mysql -获取表中不存在的结果依赖于另一个表


Php Mysql - Get results that do not exist in table depend another table

我有两个表

<>之前学生表:+----------+---------+|学号|姓名|+----------+---------+[11]杰克+----------+---------+[30]汤姆+----------+---------+| 35 |大卫|+----------+---------+【66】米娅|+----------+---------+[90]丹尼尔+----------+---------+【100】史蒂夫|+----------+---------+Student_course_number表:+--------+------------+--------------+| ID |学号|课程编号|+--------+------------+--------------+| 1 | 66 | 102 |+--------+------------+--------------+【2】66【103+--------+------------+--------------+| 3 | 66 | 40 |+--------+------------+--------------+| 4 | 66 | 41 |+--------+------------+--------------+| 5 | 30 | 55 |+--------+------------+--------------+【6】30【103+--------+------------+--------------+| 7 | 35 | 40 |+--------+------------+--------------+| 8 | 35 | 41 |+--------+------------+--------------+| 9 | 90 | 55 |+--------+------------+--------------+| 10 | 90 | 100 |+--------+------------+--------------+| 11 | 11 | 40 |+--------+------------+--------------+| 12 | 11 | 41 |+--------+------------+--------------+| 13 | 11 | 55 |+--------+------------+--------------+我希望得到以下输出:学生没有参加编号为103的课程+-----------+----------+|学号|姓名|+-----------+----------+[11]杰克+-----------+----------+| 35 |大卫|+-----------+----------+[90]丹尼尔+-----------+----------+【100】史蒂夫|+-----------+----------+之前
  • 部分学生没有参加任何课程。

您需要使用左外连接来获取student中存在的所有记录,但不包括int courses

SELECT * FROM Students 
LEFT OUTER JOIN Student_course_number 
ON Students.Student_Id = Student_course_number.Student_Id
WHERE Student_course_number.ID IS null

您可以使用not in运算符:

SELECT * 
FROM   students
WHERE  student_id NOT IN (SELECT student_id
                          FROM   student_course_number
                          WHERE  course_number = 103)