我有两个名为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'条件。
如何应用此条件或使用不存在?
答案 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')