我在获得有关问题的正确解决方案时遇到问题。我有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;