找到两个表之间的缺失值

时间:2015-02-28 21:13:30

标签: compare exists not-exists

我有两个名为selected_courses和all_courses的表。我想找到没有选择的SQL查询课程。 表:

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

从不存在的all_courses中选择all_courses。*(从selected_courses中选择course_id,其中student_id =' 1')

此查询不返回任何内容

从all_courses中选择all_courses。*,在selected_courses.course_id = all_courses.course id

上加入selected_courses

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

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

3 个答案:

答案 0 :(得分:0)

尝试执行左连接,然后排除所有具有空

的条目
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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我发现使用不存在

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')