查找两个表之间的缺失值

find missing values between two tables

我有两个表,名为 selected_courses 和 all_courses。我想用 sql 查询查找未 select 的课程。 表格:

selected_course               all_courses
+---------------+            +------------+
student_id|course_id          course_id|course_name
+---------------+            +------------+
1             A1                A1
1             A2                A2
1             A3                A3 
2             A2                A4
2             A3

select all_courses.* 来自 all_courses 其中不存在(select course_id 来自 selected_courses 其中 student_id= '1')

此查询returns无

select all_courses.* 来自 all_courses left join selected_courses on selected_courses.course_id =all_courses.course id

在此查询中,我无法应用 student_id='1' 条件。

如何应用此条件或使用不存在的条件?

尝试进行左连接,然后排除所有具有空值的条目

SELECT all_courses.*, sc.student_id
FROM all_courses AS ac
LEFT JOIN selected_courses AS sc ON (sc.course_id = al.course id)
WHERE sc.student_id IS NULL

如果您想为特定学生执行此操作,请执行以下操作:

SELECT a.course_id, a.course_name
FROM all_courses a
LEFT JOIN selected_courses s ON a.course_id = s.course id AND s.student_id  = 1
WHERE s.student_id IS NULL

我发现使用不存在

select all_courses.courses_id from all_courses where not exists (select selected_courses.course_id from taken_courses where selected.course_id=all_courses.course_id and selected_courses.student_id='1')