Sql 使用连接中的WHERE NOT检索不同的数据?
我需要检索那些没有学生注册的系的名称 表:部门Sql 使用连接中的WHERE NOT检索不同的数据?,sql,Sql,我需要检索那些没有学生注册的系的名称 表:部门 dept_id dept_name 1 IT 2 Electrical 3 Civil 4 Mechanical 5 Chemical 表:螺柱成员 f_name dept_id age AB 2 19 Rose 3 22 May 1
dept_id dept_name
1 IT
2 Electrical
3 Civil
4 Mechanical
5 Chemical
表:螺柱成员
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);
如果有人能告诉我正确答案,我将不胜感激 假设
stud\u成员中的dept\u id
不能为NULL
,这在dept\u id
为外键时为真
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);
您可以选择左联接右部分为空的所有部门
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
选择。。。从t1左连接t1.a=t2.b..上的t2。
SQLSERVER或ORACLE或任何其他数据库如果有部门id为null的stud_成员,则的可能副本将返回空结果。不存在,
。