【问题标题】:Display DNAME, LOC, DEPTNO of employees who has same MGR Using only JOINS显示具有相同 MGR 的员工的 DNAME、LOC、DEPTNO 仅使用 JOINS
【发布时间】:2018-12-13 18:23:31
【问题描述】:

如果我这样做,我会得到结果,但我只想用连接来做。

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

【问题讨论】:

    标签: sql oracle join subquery


    【解决方案1】:

    首先,你最好使用 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; 
    

    可能是首选。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      相关资源
      最近更新 更多