在SQL中找到丢失的对

Ale*_*nos 4 sql

假设有一个包含3个表的关系数据库:

Courses {name, id},
Students {name, id},
Student_Course {student_id, course_id}
Run Code Online (Sandbox Code Playgroud)

我想写一个SQL,它给了我不存在的学生课程对.如果这不可行,至少知道是否缺少对是很好的.

此外,由于这是一个较大问题的一小部分,我想自动化,看到许多不同的方法,这将是有用的.

Imr*_*e L 7

1找到所有对,然后删除对存在(由left join/not nullnot exists)

select s.id as student_id, c.id as course_id
from Courses as c
cross join Students as s
left join Student_Course as sc on sc.student_id = s.id and sc.course_id = c.id
where sc.course_id is null -- any sc field defined as "not null"
Run Code Online (Sandbox Code Playgroud)