0

我在获得有关所提问题的正确解决方案时遇到问题。我有 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 值。有人可以尝试向我解释吗?谢谢

4

1 回答 1

3

如果您必须使用联接,则:

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;

但是你想要的所有信息都在 table 中EMP,所以你可以在没有加入的情况下做到这一点:

SELECT deptno
FROM EMP 
WHERE job IN ('Engineer', 'Analyst')
GROUP BY deptno
HAVING COUNT(DISTINCT job) = 2;
于 2019-10-11T17:21:25.050 回答