我需要检索没有学生注册的部门的名称。
表:部门
dept_id dept_name
1 IT
2 Electrical
3 Civil
4 Mechanical
5 Chemical
表: stud_member
f_name dept_id age
AB 2 19
Rose 3 22
May 1 20
Noor 1 21
Haya 1 19
April 3 23
Sakina 2 20
例如机械和化学品的名称。我用外连接写了这个查询(显然也许?)但是显示错误。
请告诉我为什么我不能写:
SELECT dept_id, dept_name
FROM department
LEFT JOIN stud_member ON (WHERE NOT department.dept_id = stud_member.dept_id);
如果有人能告诉我正确答案,我将不胜感激!
答案 0 :(得分:1)
假设dept_id
中的stud_member
不能NULL
,dept_id
为FOREIGN KEY
SELECT dept_id, dept_name
FROM department
WHERE dept_id NOT IN (SELECT dept_id FROM stud_member);
SELECT d.dept_id, d.dept_name
FROM department d
WHERE NOT EXISTS (SELECT * FROM stud_member s WHERE d.dept_id = s.dept_id);
建议使用NOT EXISTS没有这个问题
1 2 1 3 4 5 4 4
答案 1 :(得分:0)
您可以选择Left JOIN的右侧部分为NULL的所有部门
SELECT d.dept_id, d.dept_name
FROM department d
LEFT JOIN stud_member sm ON d.dept_id = sm.dept_id
WHERE sm.dept_id IS NULL