查找所有拥有工程师和分析师的部门。使用联接,不要忘记 NULL 值



我在获得有关问题的正确解决方案时遇到问题。我有3张桌子:员工,部门,萨尔瓦多。这是我到目前为止得到的:

SELECT e0.deptno
FROM EMP AS e0
INNER JOIN dept AS d0 ON e0.deptno=d0.deptno
WHERE
e0.job ='Engineer'
AND
e0.job='Analyst'
AND 
e0.job IS NOT NULL;

预期结果是部门编号,但我的结果没有显示任何内容。我尝试使用 INTERSECT 运算符,一切正常。 但是我不明白我在使用 JOIN 时做错了什么。我认为我没有正确使用 NULL 值做某事。有人可以试着解释我吗?谢谢

如果必须使用联接,则:

SELECT d0.deptno
FROM dept AS d0 INNER JOIN EMP AS e0 
ON e0.deptno = d0.deptno
WHERE e0.job IN ('Engineer', 'Analyst')
GROUP BY d0.deptno
HAVING COUNT(DISTINCT e0.job) = 2;

但是您想要的所有信息都在表中EMP,因此您可以在没有连接的情况下执行此操作:

SELECT deptno
FROM EMP 
WHERE job IN ('Engineer', 'Analyst')
GROUP BY deptno
HAVING COUNT(DISTINCT job) = 2;

相关内容

  • 没有找到相关文章

最新更新