如果我这样做是为了获得结果,但我只想通过连接来实现。
SELECT DNAME, LOC, D.DEPTNO
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND MGR IN (SELECT MGR FROM EMP GROUP BY MGR HAVING COUNT(*) > 1);
答案 0 :(得分:0)
首先,最好使用ANSI-92 JOIN语法,而不要使用老式的逗号分隔格式。
此查询
SELECT DNAME, LOC, D.DEPTNO
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
JOIN (SELECT MGR FROM EMP GROUP BY MGR HAVING COUNT(*) > 1) EE ON E.MGR = EE.MGR ;
与您的相同。但是,如果您不想返回重复的行,则此
SELECT DNAME, LOC, D.DEPTNO
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
GROUP BY DNAME, LOC, D.DEPTNO
HAVING COUNT(*) > 1;
可能是首选。