我有两张table:
部门(没有行)(有两列:部门id和名称)
学生(有3列:id name department\u id)和两行:
23,"Alice",1
1,"Bob",7
我的查询是要返回学号和学生姓名时,系不存在。
我的问题是:
SELECT distinct s.id as id , s.name as name
FROM Departments d, Students s WHERE s.department_id NOT IN (select id from Departments)
该查询不返回任何行。如果两个部门都不存在,它不应该返回两行吗?
例如,如果department表有一行:
1, finance
然后查询工作正常并返回
7,Bob
因为爱丽丝的部门(id 1)现在已经存在了。
2条答案
按热度按时间vyswwuz21#
因为你写了
这将在两个表之间创建一个叉积,然后使用
WHERE
条款。如果任一表为空,则叉积为空。你不需要交叉积
Departments
如果你用的是WHERE s.department_id NOT IN
.t40tm48m2#
尝试此查询
left join返回student表中与departments表中的记录匹配的所有记录