【问题标题】:Ambiguous error when using INNER JOIN使用 INNER JOIN 时出现模棱两可的错误
【发布时间】:2013-01-18 14:27:35
【问题描述】:

我正在尝试从 depts 表中选择 deptno、dname 并将其与 emp 表连接以选择 empno 和 ename。然后我想按部门名称对它们进行分组,按 deptno 升序排序。
当加入这两个表时,我不断得到“deptno”是模棱两可的。但这是加入表格的共同点。任何有用的建议,我的错误可能与

SELECT deptno, dname, empno, ename
FROM dept INNER JOIN emp
ON dept.deptno = emp.deptno
GROUP BY dname
ORDER BY deptno ASC; 

感谢您提供任何有用的建议。

【问题讨论】:

    标签: mysql sql oracle oracle11g


    【解决方案1】:

    歧义来自deptno 字段,该字段出现在deptemp 表中。为避免它使用限定名称或别名。

    SELECT D.deptno, dname, empno, ename
    FROM dept D
        INNER JOIN emp E
            ON D.deptno = E.deptno
    GROUP BY dname
    ORDER BY D.deptno ASC; 
    

    【讨论】:

      【解决方案2】:

      问题是您在两个表中都有deptno,但您没有指定在SELECTORDER BY 中都返回哪个表:

      SELECT dept.deptno, dname, empno, ename
      FROM dept 
      INNER JOIN emp
        ON dept.deptno = emp.deptno
      GROUP BY dname
      ORDER BY dept.deptno ASC; 
      

      或者

      SELECT emp.deptno, dname, empno, ename
      FROM dept 
      INNER JOIN emp
        ON dept.deptno = emp.deptno
      GROUP BY dname
      ORDER BY emp.deptno ASC; 
      

      如果您没有为deptno 指定表,那么您将收到此错误消息。

      【讨论】:

        【解决方案3】:
        SELECT dept.deptno, dname, empno, ename FROM dept INNER JOIN emp ON dept.deptno = emp.deptno   
        GROUP BY dname ORDER BY dept.deptno ASC;
        

        【讨论】:

          【解决方案4】:

          试试这个

           SELECT dept.deptno, dname, empno, ename
           FROM dept INNER JOIN emp
           ON dept.deptno = emp.deptno
           GROUP BY dname
           ORDER BY dept.deptno ASC; 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-08-12
            • 2019-01-19
            • 1970-01-01
            • 1970-01-01
            • 2015-09-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多