显示具有相同MGR的员工的DNAME,LOC,DEPTNO仅使用JOINS

时间:2018-12-13 18:23:32

标签: sql oracle join subquery

如果我这样做是为了获得结果,但我只想通过连接来实现。

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);

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; 

可能是首选。