【问题标题】: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 字段,该字段出现在dept 和emp 表中。为避免它使用限定名称或别名。
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,但您没有指定在SELECT 和ORDER 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;